我需要找出我的sql server表中特定字段中有多少行,只包含非字母数字字符。
我认为这是一个正则表达式,我需要沿着[^ a-zA-Z0-9]的行,但我不确定如果没有有效的字母数字字符,我需要返回行的确切语法那里。
答案 0 :(得分:47)
SQL Server没有正则表达式。它使用不相同的LIKE模式匹配语法。
碰巧,你就近了。只需要前导+尾随通配符并移动NOT
WHERE whatever NOT LIKE '%[a-z0-9]%'
答案 1 :(得分:2)
如果你有短字符串,你应该能够创建一些LIKE模式('[^a-zA-Z0-9]'
,'[^a-zA-Z0-9][^a-zA-Z0-9]'
,...)来匹配不同长度的字符串。否则,您应该使用CLR用户定义的函数和正确的正则表达式 - Regular Expressions Make Pattern Matching And Data Extraction Easier。
答案 2 :(得分:0)
这将无法正常工作,例如abcÑxyz
将通过它,因为它有 a、b、c...你需要使用 Collate 或检查每个字节。