如何编写一个SQL以区分大小写的方式以a到z开头搜索名称?
我当前的解决方案:
select *
from HR.Employees
where name collate sql_latin1_general_cp1_cs_as like '[abcdefghijklmnopqrstuvwxyz]%';
有更好的解决方案吗?
答案 0 :(得分:2)
您可以检查第一个字符的ASCII码:
select *
from HR.Employees
where ascii(substring(name, 1, 1)) between ascii('a') and ascii('z')
您也可以使用left(name, 1)
函数代替substring(name, 1, 1)
。
答案 1 :(得分:1)
我不认为您需要第一个COLLATE
,但这是一个可以满足您需求的选项。
重要的部分是使比较字符串区分大小写。
SELECT *
FROM HR.Employees
WHERE name LIKE '[a-z]%' COLLATE Latin1_General_BIN;