微软SQL Server中的Like关键字

4

有关如何使 Microsoft SQL Server 中的 Like 关键字区分大小写的任何输入都可以吗?

例如:Name Like 'David' 会获取所有名称为 David、david 或 daVid 等的结果。我的目标是只获取 David。我希望从专家那里了解不同的方法。


3
数据是如何被存储的?使用哪个数据库管理系统(DBMS)? - Anonymous
你尝试过使用SQL排序规则的解决方案吗? - Darren
“如何使用子字符串进行操作?” >> 这是您后来添加的不同问题,您可能需要单独提出该问题,但通过谷歌搜索可以得到无数答案 ;)。 - Abel
4个回答

4

您需要使用排序规则。

SELECT * FROM myTable  
WHERE LastName COLLATE Latin1_General_CS_AS = 'smyTH' 

@karthikgorijavolu - 如果要通过子字符串完成,您可以将WHERE子句替换为以下内容: WHERE SUBSTRING(LastName,1,5) COLLATE Latin1_General_CS_AS = 'smyTH' - Darren

2
这里有一个例子,使用 Darren Davis 的回答。
declare @tmp table (LastName nvarchar(10))

insert @tmp
select ('Gorijavolu')

select  LastName As 'CorrectCase' from  @tmp WHERE SUBSTRING(LastName,1,4) COLLATE Latin1_General_CS_AS = 'Gori'
select  LastName AS 'WrongCase' from    @tmp WHERE SUBSTRING(LastName,1,4) COLLATE Latin1_General_CS_AS = 'gori'

提供:

CorrectCase
-----------
Gorijavolu
(1 row(s) affected)

WrongCase
----------

(0 row(s) affected)

1
这取决于您使用的数据库。例如,如果您为表或数据库选择了不区分大小写的排序规则,则MySQL将进行不区分大小写的比较,否则将进行区分大小写的比较。

1

LIKE 在PostgreSQL中是区分大小写的,而ILIKE则不区分大小写。因此这取决于您使用的DBMS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接