使用SQL Server正则表达式过滤带有垃圾字符的行

Moo*_*oon 2 regex sql sql-server

在我的表中,某些行在某些列中有垃圾字符,如Ё㺞稹㾸䐶㩜癈癈.我试图过滤掉如下所示的行:

SELECT Col1, Col2, Col3 FROM MyTable WHERE Col2 NOT LIKE '%[REGEX]%'
Run Code Online (Sandbox Code Playgroud)
  1. 有没有更好的方法?
  2. 如果不是,我怎样才能生成正确的正则表达式?我不想要任何记录,其中Col2只有字母数字字符,标点和空格.

Mar*_*ith 6

SQL Server不支持适当的RegEx LIKE.

模式语法确实支持negation(^)和范围或字符集,但您可以使用类似的东西.

WHERE Col2  LIKE N'%[^0-9A-Za-z .,;:]%' collate Latin1_General_BIN
Run Code Online (Sandbox Code Playgroud)