实际上,几周前有人问我自己,而我确切地知道如何使用SP或UDF来执行此操作,但是我想知道是否有没有这些方法的快速简便的方法。我假设有,但我找不到。
我需要说明的一点是,尽管我们知道允许使用哪些字符(az,AZ,0-9),但我们 不想指定 不允许使用的字符(#@!$等…)。另外,我们希望拉出 包含 非法字符的行,以便可以将其列出给用户修复(由于我们无法控制输入过程,因此此时无法执行任何操作)。
之前,我已经浏览过SO和Google,但找不到能满足我要求的内容。我已经看到了许多示例,这些示例可以告诉您它是否包含字母数字字符,但是可以在查询形式中找不到的句子中加上撇号。
另请注意,此列中的值可以是null或''(空)varchar。
null
''
varchar
这不是吗?
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