2012-02-03 7 views
4

しばらくの間、私はWHERE基準を正しく評価するために、大文字と小文字の区別を考慮する必要があると考えました。大文字小文字を区別しない場合は、UPPER()LOWER()を使用します。しかし、以下のクエリで同じ結果が得られることがわかりました。UPPER()とLOWER()は必要ありませんか?

SELECT * FROM ATable WHERE UPPER(part) = 'SOMEPARTNAME' 
SELECT * FROM ATable WHERE part  = 'SOMEPARTNAME' 
SELECT * FROM ATable WHERE part  = 'somepartname' 

SQL Case Sensitive String Compareは、大文字と小文字を区別照合を使用することを説明しています。大文字と小文字の区別を強制する唯一の方法ですか?また、大文字小文字を区別しない照合がある場合は、UPPER()LOWER()が必要ですか?

ありがとうございました。

答えて

5

一般的なSQL Serverの既定の大文字と小文字を区別しない照合では、文字列を比較するときにUPPER()LOWER()は不要です。

は実際に表現など

SELECT * FROM Table WHERE UPPER(part) = 'SOMEPARTNAME' 

はまた、非検索引数可能すなわち起因比較の左側にpartカラムに適用される関数に、使用可能なインデックスを使用しません。

+0

+1グレード違反報告回答日時: –

0

以下このクエリはCASE SENSITIVE検索を生成します。

SELECT Column1 
FROM Table1 
WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch' 

UPPER()LOWER()はあなた大文字と小文字を区別しない照合ので、もし文字の大文字と小文字を変更する唯一の機能であり、彼らは唯一のSELECTキーワードの後に​​使用されています

SELECT UPPER('qwerty'), LOWER('Dog') 

returns 
QWERTY, dog 
関連する問題