SQL Server:区分大小写的匹配?

时间:2017-05-09 00:01:04

标签: sql-server case-sensitive

鉴于现有的SQL Server数据库,以及对更改内容的权限有限,是否有任何方法可以实现区分大小写的匹配?

由于功率有限,用户无权以任何方式重新安装数据库或更改排序规则。

我理解不区分大小写的方便性,但有时您需要处理大小合理的数据。

1 个答案:

答案 0 :(得分:0)

您可以使用区分大小写的排序规则指定COLLATE子句以强制区分大小写的比较:

SELECT * 
FROM dbo.Example
WHERE 
    Col1 COLLATE SQL_Latin1_General_CP1_CS_AS = 'A';

然而,这将导致non-sargable表达式,因此列上的索引无法有效使用(例如扫描而不是搜索)。还要考虑指定不带COLLATE的谓词,以便可以使用索引搜索,并根据区分大小写过滤行。

SELECT * 
FROM dbo.Example
WHERE 
    Col1 = 'A' 
    AND col1 COLLATE SQL_Latin1_General_CP1_CS_AS = 'A';