返回sql行,其中字段仅包含非字母数字字符

时间:2011-08-23 07:07:32

标签: sql sql-server regex tsql

我需要找出我的sql server表中特定字段中有多少行,只包含非字母数字字符。

我认为这是一个正则表达式,我需要沿着[^ a-zA-Z0-9]的行,但我不确定如果没有有效的字母数字字符,我需要返回行的确切语法那里。

3 个答案:

答案 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...你需要使用 Collat​​e 或检查每个字节。