鑑於現有的SQL Server數據庫以及改變事物的能力有限,是否有任何方法來實現區分大小寫的匹配?SQL Server:區分大小寫的匹配?
由於功率有限,用戶無法以任何方式重新安裝數據庫或更改排序規則。
我理解不區分大小寫的便利性,但有時您需要處理大小寫不重複的數據。
鑑於現有的SQL Server數據庫以及改變事物的能力有限,是否有任何方法來實現區分大小寫的匹配?SQL Server:區分大小寫的匹配?
由於功率有限,用戶無法以任何方式重新安裝數據庫或更改排序規則。
我理解不區分大小寫的便利性,但有時您需要處理大小寫不重複的數據。
可以指定與區分大小寫排序一個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';
對不起 - 非sargable? – Manngo
@Manngo,我添加了一個非sargable定義的鏈接:https://en.wikipedia.org/wiki/Sargable –
This? http://stackoverflow.com/questions/2004363/how-to-collate-sql-latin1-general-cp1-ci-as-using-in-operator – luly