我需要在列中找到所有特殊字符的出现位置SQL Server 2008.所以,我不在乎A, B, C ... 8, 9, 0,但我确实在意!, @, &,,等等.
在我看来,最简单的方法就是排除A, B, C, ... 8, 9, 0,但如果我写了一个声明来排除这些,我会错过那些有!和的条目A.因此,在我看来,我必须获得每个非字母/非数字字符的列表,然后SELECT使用a LIKE和Wildcard限定符运行.
这是我要运行的:
SELECT Col1
FROM TABLE
WHERE Col1 LIKE ('!', '@', '#', '$', '%'....)
Run Code Online (Sandbox Code Playgroud)
但是,我不认为你可以运行多个限定符,可以吗?有没有办法可以做到这一点?
Dam*_*ver 30
否定者是你的朋友:
SELECT Col1
FROM TABLE
WHERE Col1 like '%[^a-Z0-9]%'
Run Code Online (Sandbox Code Playgroud)
这表示您希望任何行Col1包含任意数量的字符,然后一个字符不在集合a-Z0-9中,然后是任意数量的字符.
如果你有一个区分大小写的排序规则,这一点很重要,你使用包括大写和小写的范围A,a,Z和z,这是我给什么(我本来它周围的错误的方式.a来之前A,Z自带之后z)
或者,换句话说,你可以把原作WHERE写成:
Col1 LIKE '[!@#$%]'
Run Code Online (Sandbox Code Playgroud)
但是,正如您所观察到的,您需要知道要包含在内的所有字符[].
小智 7
以下 Transact SQL 脚本适用于所有语言(国际)。解决方案不是检查字母数字,而是检查是否不包含特殊字符。
DECLARE @teststring nvarchar(max)
SET @teststring = 'Test''Me'
SELECT 'IS ALPHANUMERIC: ' + @teststring
WHERE @teststring NOT LIKE '%[-!#%&+,./:;<=>@`{|}~"()*\\\_\^\?\[\]\'']%' {ESCAPE '\'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119125 次 |
| 最近记录: |