2017-05-09 11 views
0

既存のSQL Serverデータベースと、変化するものに対する限られたパワーを考えると、大文字と小文字を区別する一致を実装する方法はありますか?SQL Server:大文字と小文字は区別されますか?

制限されているため、ユーザーはデータベースを再インストールするか、照合順序を変更することはできません。

私は大文字小文字を区別しないという利便性を理解していますが、大文字小文字が重要な場合はデータを扱う必要があることもあります。あなたは、大文字と小文字を区別を強制するために、大文字と小文字を区別照合でCOLLATE句を指定することができます

+0

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

答えて

0

は比較:列に索引ができなくなりますので

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

申し訳ありませんが、 – Manngo

+0

@Manngo、私は非sargableの定義を持つリンクを追加しました:https://en.wikipedia.org/wiki/Sargable –

関連する問題