2012-04-13 54 views
4

关于在Microsoft SQL Server中使Like关键字充当区分大小写的任何输入。Microsoft SQL Server Like关键字

例如:名称Like'David'取得所有名字David或david或daVid等 我的目标是只取得David.I有兴趣了解来自专家的不同方式。

+3

如何被存储的数据?哪个DBMS? – Anonymous 2012-04-13 11:45:07

+0

SQL SERVER 2008 R2 – 2012-04-13 11:46:30

+0

您是否尝试过使用SQL Colation解决方案? – 2012-04-13 11:53:03

回答

1

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

4

您需要使用排序规则。

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

@karthikgorijavolu - 要通过一个子字符串来完成,你可以添加下面的WHERE子句替换为: WHERE SUBSTRING(LastName,1,5)COLLATE Latin1_General_CS_AS ='smyTH' – 2012-04-14 00:06:49

1

LIKEin PostgreSQL是大小写敏感而ILIKE是不区分大小写的。所以这会随着你使用的DBMS而变化。

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)