我正在尝试过滤一些 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/