喜欢区分大小写的通配符

Eva*_*kas 4 sql-server sql-server-2016

我有以下查询:

SELECT *
FROM sys.objects AS O
WHERE O.is_ms_shipped = 0
AND O.name LIKE '%[A-Z][A-Z][A-Z]%' COLLATE Latin1_General_CS_AS;
Run Code Online (Sandbox Code Playgroud)

这应该是找到数据库中至少有三个连续大写字符的所有对象,但它似乎不起作用,我不确定为什么.我试图明确列出所有字符而不是指定范围,但它没有解决问题.

样本数据:

name
---------
HTMLTable
HtmlTable
Run Code Online (Sandbox Code Playgroud)

期望的输出:

name
---------
HTMLTable
Run Code Online (Sandbox Code Playgroud)

t-c*_*.dk 5

试试这个:

LIKE '%[A-Z][A-Z][A-Z]%' COLLATE Latin1_General_Bin
Run Code Online (Sandbox Code Playgroud)

  • @EvaldasBuinauskas是的.`Latin1_General_CS_AS`仍然按字母顺序对字母进行排序.所以,在命令''AaBbCc ...'`*编辑:请注意,带有重音的字符也会出现在这里.*因此,在你的`LIKE`表达式中,唯一无效的字符就是''z' `.这里给你的校对也按字母顺序排列字母:''ABCDE ... abcde ...'`,因此你的`LIKE'就像你现在想要的那样工作. (3认同)