在SQL Server 2008中查找列中的所有特殊字符

sg3maiej  于 2022-12-17  发布在  SQL Server
关注(0)|答案(4)|浏览(169)

我需要找到所有特殊字符在SQL Server 2008的列中出现的位置,所以,我不关心A, B, C ... 8, 9, 0,但我关心!, @, &,,等等。
在我看来,最简单的方法是排除A, B, C, ... 8, 9, 0,但是如果我编写一个语句来排除它们,我将错过包含!A的条目,因此,在我看来,我必须获得每个非字母/非数字字符的列表,然后运行带有LIKEWildcard限定符的SELECT
下面是我将运行的代码:

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

然而,我不认为你可以运行多个限定符,你能吗?有什么方法可以实现这一点?

o2g1uqev

o2g1uqev1#

消极是你的朋友:

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

也就是说,您需要Col1由任意数量的字符组成的任意行,然后是集合a-Z 0 -9中的一个字符 not,然后是任意数量的字符。
如果您有区分大小写的排序规则,那么使用包含大小写的范围AaZz是很重要的,这是我给出的(最初我弄错了,aA之前,Zz之后)
或者,换句话说,您可以将原始的WHERE编写为:

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

但是,正如您所观察到的,您需要知道要包含在[]中的 * 所有 * 字符。

u0sqgete

u0sqgete2#

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

DECLARE @teststring nvarchar(max)
SET @teststring = 'Test''Me'
SELECT 'IS ALPHANUMERIC: ' + @teststring
WHERE @teststring NOT LIKE '%[-!#%&+,./:;<=>@`{|}~"()*\\\_\^\?\[\]\'']%' {ESCAPE '\'}
bvuwiixz

bvuwiixz3#

Select * from TableName Where ColumnName LIKE '%[^A-Za-z0-9, ]%'

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

gc0ot86w

gc0ot86w4#

select count(*) from dbo.tablename where address_line_1 LIKE '%[\'']%' {eSCAPE'\'}

相关问题