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

标签 sql-server tsql

我正在尝试过滤一些 SQL Server 数据并需要满足以下条件的结果:

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

有没有一种有效的方法可以在 SQL Server 中使用 CHAR 来做到这一点,或者有人有更好的解决方案吗?

最佳答案

这使用双重否定来仅过滤到所需的字符范围

任何超出所需范围的字符都会从 LIKE 中得出 true。如果字符串仅包含所需范围内的字符,则 LIKE 给出 false。然后另一个不是

WHERE
   SomeCol NOT LIKE '%[^a-z0-9-'']%'

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

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

   SomeCol COLLATE Latin1_General_CI_AS NOT LIKE '%[^a-z0-9-']%'

或更改范围

   SomeCol NOT LIKE '%[^a-zA-Z0-9-']%'

或者,如果您想包含 ä = a

   SomeCol COLLATE Latin1_General_CI_AI NOT LIKE '%[^a-z0-9-']%'

关于sql-server - 在 SQL Server 中使用 SELECT 仅获取包含字母数字数据(和某些标点符号)的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744173/

相关文章:

c# - MVC5 DataContext 最佳实践?

sql - 成套查询思想?

tsql - 在t-sql中生成具有可变长度的给定字符集的所有可能排列

sql - 连接表并选择给定 id 仅存在一个值的行

SQL 别名无法识别

sql-server - ssis导入问题将一些数据映射到xml文件

sql-server - 合计投票结果

json - 如何将授权 header 从 SQL Server 传递到 API 以获取 JSON?

SQL Server : determining the Years, 两个日期之间的月、周和天

sql - 如何将数字转换为以逗号分隔的数字格式字符串?