如何在SQL Server中用LIKE语句查找列中的无效字符?
用SQL Server的LIKE语句筛选含非法字符的行
要找出MyCol列中包含字母、数字、连字符(-)、下划线(_)以外字符的行,你可以使用否定字符集的LIKE模式,具体语句如下:
SELECT * FROM YourTable WHERE MyCol LIKE '%[^a-z0-9\-_]%'
关键说明:
- 你之前使用的
MyCol NOT LIKE '%[a-z0-9]%'逻辑有误:这个语句只会筛选完全不包含字母/数字的行,无法识别那些同时包含合法和非法字符的行。 [^a-z0-9\-_]是核心匹配规则:^在方括号内表示“匹配不在后续字符集中的任意字符”a-z匹配小写字母(若需支持大写,可改为a-zA-Z,或依赖SQL Server默认的不区分大小写排序规则)0-9匹配数字\-匹配连字符(必须转义,否则会被当作范围分隔符)_匹配下划线(在方括号内无需转义,直接表示普通下划线)
补充场景:
如果需要包含NULL值(新系统可能不允许NULL),可以扩展条件:
SELECT * FROM YourTable WHERE MyCol LIKE '%[^a-z0-9\-_]%' OR MyCol IS NULL
内容的提问来源于stack exchange,提问作者Vaccano
相关产品推荐
相关产品推荐

