使用SELECT仅获取SQL Server中包含字母数字数据(和某些标点符号)的字段

Nic*_*ick 7 t-sql sql-server

我试图过滤一些SQL服务器数据,并要求具有以下条件的结果:

  • 字段中包含字母数字字符,不区分大小写
  • 该字段有一定的标点符号(撇号和连字符)
  • 该字段没有空格

有没有一种有效的方法在SQL Server中使用CHAR执行此操作,还是有人有更好的解决方案?

gbn*_*gbn 15

这使用双阴影仅过滤到所需的字符范围

所需范围之外的任何字符都可以从LIKE中获得真实.如果字符串仅包含所需范围内的字符,则LIKE给出false.然后另一个不

WHERE
   SomeCol NOT LIKE '%[^a-z0-9-'']%'
Run Code Online (Sandbox Code Playgroud)

注意:我在这里使用单引号

默认情况下,SQL Server不区分大小写.如果需要,添加COLLATE子句

   SomeCol COLLATE Latin1_General_CI_AS NOT LIKE '%[^a-z0-9-']%'
Run Code Online (Sandbox Code Playgroud)

或改变范围

   SomeCol NOT LIKE '%[^a-zA-Z0-9-']%'
Run Code Online (Sandbox Code Playgroud)

或者,如果你想包括ä= a

   SomeCol COLLATE Latin1_General_CI_AI NOT LIKE '%[^a-z0-9-']%'
Run Code Online (Sandbox Code Playgroud)

  • 我编辑了第一个字符串文字,用double替换了单引号.如果我错了,请纠正我. (2认同)