解决方法
这使用双倍负片仅过滤到所需的字符范围
期望范围之外的任何字符都可以从LIKE中获得真实.如果字符串仅包含所需范围内的字符,则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-']%'