23

我需要在SQL Server 2008. 所以,我不在乎A, B, C ... 8, 9, 0,但我确实在乎!, @, &,,等等。

在我看来,最简单的方法是 exclude A, B, C, ... 8, 9, 0,但如果我写了一个声明来排除这些,我会错过包含!and的条目A。因此,在我看来,我必须获取每个非字母/非数字字符的列表,然后SELECT使用 aLIKEWildcard限定符运行 a。

这是我要运行的:

SELECT Col1
FROM TABLE
WHERE Col1 LIKE ('!', '@', '#', '$', '%'....)

但是,我不认为您可以运行多个预选赛,可以吗?有没有办法我可以做到这一点?

4

4 回答 4

40

负数是你的朋友:

SELECT Col1
FROM TABLE
WHERE Col1 like '%[^a-Z0-9]%'

这表示您想要Col1由任意数量的字符组成的任何行,然后是不在集合 a-Z0-9 中的一个字符,然后是任意数量的字符。

如果您有区分大小写的排序规则,请务必使用包含大写和小写 , 和 的范围A,这a就是我给出的(最初我把它弄错了。出现在.之后)ZzaAZz


或者,换句话说,您可以将您的原件WHERE写成:

Col1 LIKE '%[!@#$%]%'

但是,正如您所观察到的,您需要知道要包含在[].

于 2012-10-15T14:37:35.560 回答
4

以下事务 SQL 脚本适用于所有语言(国际)。解决方案不是检查字母数字,而是检查不包含特殊字符。

DECLARE @teststring nvarchar(max)
SET @teststring = 'Test''Me'
SELECT 'IS ALPHANUMERIC: ' + @teststring
WHERE @teststring NOT LIKE '%[-!#%&+,./:;<=>@`{|}~"()*\\\_\^\?\[\]\'']%' {ESCAPE '\'}
于 2017-04-19T09:54:51.387 回答
3
Select * from TableName Where ColumnName LIKE '%[^A-Za-z0-9, ]%'

这将为您提供包含任何特殊字符的所有行。

于 2018-02-23T17:56:23.340 回答
1
select count(*) from dbo.tablename where address_line_1 LIKE '%[\'']%' {eSCAPE'\'}
于 2019-04-18T16:53:23.517 回答