我正在尝试查找包含6个或更多字母数字字符的字符串大写的记录。一些例子:
PENDING 3RDPARTY CODE27
我使用以下语句:
SELECT Details FROM MyTable WHERE Details LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
这将返回包含任何6个或多个字母的单词的所有记录,无论如何。
我已经添加了一个COLLATE语句:
SELECT Details FROM MyTable WHERE Details COLLATE Latin1_General_CS_AS LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
这一切都没有改变。它仍然返回具有6个或多个字母的单词的记录,无论如何。
作为一个测试,我试过:
SELECT Details FROM MyTable WHERE Details COLLATE Latin1_General_CS_AS LIKE '%pending%'; SELECT Details FROM MyTable WHERE Details COLLATE Latin1_General_CS_AS LIKE '%PENDING%';
这两个工作都分别返回包含“待定”和“待定”的记录。所以这个问题似乎是由LIKE claus的模式匹配。
执行此区分大小写的搜索可以做些什么?
解决方法
尝试使用COLLATE Latin1_General_BIN而不是COLLATE Latin1_General_CS_AS