首页 > 解决方案 > 在 SQL Server 中使用 Like 运算符 'Ename like '[AZ]%' 和 'Ename like '[az]%' 意思相同吗?

问题描述

对于“第一个字符应该是列中的大写字母”的问题,我有点困惑。

我尝试对问题“第一个字符应该是'+'或数字”使用 LIKE 函数作为select * from emp where mobile like '+%' or mobile like '[0-9]%';

标签: sqlsql-server

解决方案


正如我在评论中提到的,这一切都取决于您使用的排序规则。如果您使用的是不区分大小写的排序规则,那么 作为比较目的LIKE '[A-Z]'LIKE '[a-z]'同义词,字母的大小写无关紧要。但是,对于区分大小写或二进制排序规则,情况并非如此,这两个表达式将导致不同的结果。

因此,对于 3 个示例排序规则,您可以看到一个返回1,而另外两个返回0

SELECT CASE 'A' COLLATE Latin1_General_CI_AI WHEN 'a' COLLATE Latin1_General_CI_AI THEN 1 ELSE 0 END AS CaseInsensitiveCollation,
       CASE 'A' COLLATE Latin1_General_CS_AI WHEN 'a' COLLATE Latin1_General_CS_AI THEN 1 ELSE 0 END AS CaseSensitiveCollation,
       CASE 'A' COLLATE Latin1_General_BIN WHEN 'a' COLLATE Latin1_General_BIN THEN 1 ELSE 0 END AS BinaryCollation;

推荐阅读