2017-05-09 151 views
0

鑑於現有的SQL Server數據庫以及改變事物的能力有限,是否有任何方法來實現區分大小寫的匹配?SQL Server:區分大小寫的匹配?

由於功率有限,用戶無法以任何方式重新安裝數據庫或更改排序規則。

我理解不區分大小寫的便利性,但有時您需要處理大小寫不重複的數據。

+0

This? http://stackoverflow.com/questions/2004363/how-to-collat​​e-sql-latin1-general-cp1-ci-as-using-in-operator – luly

回答

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'; 
+0

對不起 - 非sargable? – Manngo

+0

@Manngo,我添加了一個非sargable定義的鏈接:https://en.wikipedia.org/wiki/Sargable –

相關問題