admin

SQL Server 2008查询以查找列中包含非字母数字字符的行

sql

实际上,几周前有人问我自己,而我确切地知道如何使用SP或UDF来执行此操作,但是我想知道是否有没有这些方法的快速简便的方法。我假设有,但我找不到。

我需要说明的一点是,尽管我们知道允许使用哪些字符(az,AZ,0-9),但我们 不想指定 不允许使用的字符(#@!$等…)。另外,我们希望拉出
包含 非法字符的行,以便可以将其列出给用户修复(由于我们无法控制输入过程,因此此时无法执行任何操作)。

之前,我已经浏览过SO和Google,但找不到能满足我要求的内容。我已经看到了许多示例,这些示例可以告诉您它是否包含字母数字字符,但是可以在查询形式中找不到的句子中加上撇号。

另请注意,此列中的值可以是null''(空)varchar


阅读 225

收藏
2021-05-10

共1个答案

admin

这不是吗?

SELECT * FROM TABLE
WHERE COLUMN_NAME LIKE '%[^a-zA-Z0-9]%'

设置

use tempdb
create table mytable ( mycol varchar(40) NULL)

insert into mytable VALUES ('abcd')
insert into mytable VALUES ('ABCD')
insert into mytable VALUES ('1234')
insert into mytable VALUES ('efg%^&hji')
insert into mytable VALUES (NULL)
insert into mytable VALUES ('')
insert into mytable VALUES ('apostrophe '' in a sentence')

SELECT * FROM mytable
WHERE mycol LIKE '%[^a-zA-Z0-9]%'

drop table mytable

结果

mycol
----------------------------------------
efg%^&hji
apostrophe ' in a sentence
2021-05-10