我需要在SQL Server 2008
的列中找到所有特殊字符的出现位置。所以,我不关心A, B, C ... 8, 9, 0
,但我关心!, @, &,
等等。
在我看来,最简单的方法是排除A, B, C, ... 8, 9, 0
,但如果我写了一个语句来排除这些,我会错过!
和A
的条目。所以,在我看来,我必须获得每个非字母/非数字字符的列表,然后使用SELECT
和LIKE
限定符运行Wildcard
。
这是我要跑的:
SELECT Col1
FROM TABLE
WHERE Col1 LIKE ('!', '@', '#', '$', '%'....)
但是,我认为你不能运行多个限定符,可以吗?有没有办法可以做到这一点?
答案 0 :(得分:28)
否定者是你的朋友:
SELECT Col1
FROM TABLE
WHERE Col1 like '%[^a-Z0-9]%'
其中说你想要Col1
包含任意数量字符的任何行,然后在集合a-Z0-9中有一个字符不,然后是任意数量的字符。
如果您使用区分大小写的排序规则,请务必使用包含大写和小写A
,a
,Z
和z
的范围,就是我给出的(原来我的方法是错误的。a
来自A
。Z
来自z
)
或者,换句话说,您可以将原始WHERE
写为:
Col1 LIKE '[!@#$%]'
但是,正如您所观察到的,您需要知道要包含在[]
中的所有字符。
答案 1 :(得分:1)
以下transact SQL脚本适用于所有语言(国际)。解决方案不是检查字母数字,而是检查不包含特殊字符。
DECLARE @teststring nvarchar(max)
SET @teststring = 'Test''Me'
SELECT 'IS ALPHANUMERIC: ' + @teststring
WHERE @teststring NOT LIKE '%[-!#%&+,./:;<=>@`{|}~"()*\\\_\^\?\[\]\'']%' {ESCAPE '\'}
答案 2 :(得分:0)
Select * from TableName Where ColumnName LIKE '%[^A-Za-z0-9, ]%'
这将为您提供包含任何特殊字符的所有行。
答案 3 :(得分:0)
select count(*) from dbo.tablename where address_line_1 LIKE '%[\'']%' {eSCAPE'\'}