1

我有一个名为 的列Cities,该列的数据如下:

 City 1
 CITY 1         
 CITY 1 

我只想选择CITY(大写)

这不是做这项工作:

SELECT * FROM Location
WHERE Cities LIKE 'CITY 1'

这给了我所有的CITY 1包括City 1

4

6 回答 6

9

默认情况下,SQL Server 将使用不区分大小写的排序规则。

SELECT * 
FROM Location 
WHERE Cities LIKE 'CITY 1' 
COLLATE Latin1_General_CS_AI

使用区分大小写的排序规则标记比较运算符以应用区分大小写的过滤器

于 2013-08-08T15:33:58.510 回答
1

我假设您的 SQL 是不区分大小写的排序规则,在这种情况下,搜索“C”和“c”将返回相同的结果。您需要通过整理查询来进行区分大小写的搜索:

SELECT * FROM Location WHERE Cities LIKE 'CITY 1' COLLATE <Insert case sensitive collation here>

例如

SELECT * FROM Location WHERE Cities LIKE 'CITY 1' COLLATE Latin1_General_CS_AI
于 2013-08-08T15:35:00.673 回答
0

您可以使用 BINARY 运算符来强制区分大小写。

http://dev.mysql.com/doc/refman/5.0/en/charset-binary-op.html

SELECT * FROM Location WHERE BINARY Cities = 'CITY 1';
于 2013-08-08T15:35:11.030 回答
0

尝试:

SELECT *
FROM Location
WHERE Cities COLLATE Latin1_General_CS_AS = 'CITY 1'
于 2013-08-08T15:36:14.993 回答
-1

解决方案:

Select * From Location Where Cities=BINARY UPPER(Cities);
于 2013-08-08T15:36:10.117 回答
-1

试试这个查询。

SELECT *
FROM Location
WHERE Cities LIKE 'CITY 1'
COLLATE Latin1_General_CS_AS;

整理使查询区分大小写“CS”和区分重音“AS”。Latin1 在许多其他语言中指定英语。

于 2013-08-08T15:46:30.417 回答