鉴于现有的SQL Server数据库,以及对更改内容的权限有限,是否有任何方法可以实现区分大小写的匹配?
由于功率有限,用户无权以任何方式重新安装数据库或更改排序规则。
我理解不区分大小写的方便性,但有时您需要处理大小合理的数据。
答案 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';