私はこのデータベースを持っています:
abcDEF
ABCdef
abcdef
私が書いた場合:select * from MyTbl where A='ABCdef'
入手方法:ABCdef
と取得方法:
abcDEF
ABCdef
abcdef
前もって感謝します
書くのを忘れた-sqlCE
COLLATE
キーワードを使用して、クエリで大文字と小文字を区別することができます。
SELECT A
FROM MyTbl
WHERE A COLLATE Latin1_General_CS_AS = 'ABCdef'
データベースにabcDEF、ABCdef、abcdefが既に存在する場合は、大文字と小文字が区別されるか、制約がありません。
インデックスの使用を無効にする本当に大文字と小文字を区別する(大文字と小文字を区別しないデータベースの場合)には、両側にCOLLATE
を追加する必要があります。
SELECT TheColumn
FROM MyTable
WHERE TheColumn COLLATE Latin1_General_CS_AS = 'ABCdef' COLLATE Latin1_General_CS_AS
アクセントもどうですか? Latin1_General_CS_AI
、Latin1_General_Bin
?
それは照合に関するすべてです。それぞれにサフィックスがあります(CIおよびCS、大文字と小文字を区別せず、大文字と小文字を区別します)。
SQLではデフォルトで大文字と小文字が区別されないため、単純な文字列比較を行うと3つの項目すべてが取得されます。大文字と小文字を区別するには、フィールドの値と検索値をvarbinaryとしてキャストします。
SELECT * FROM MyTbl WHERE CAST(A AS varbinary(20)) = CAST('ABCdef' as varbinary(20))
上記では、varcharフィールドのサイズが20であると想定しています。nvarcharの場合は、2倍にします(@ ps2goatに感謝します)。
where
の後にバイナリキーワードを追加するだけです。
select * from MyTbl where binary A = 'ABCdef';