web-dev-qa-db-ja.com

SQL Server '='コンパレータの大文字と小文字が区別されないのはなぜですか?

SQLサーバー'='コンパレータをテキスト比較に使用する場合、大文字と小文字は区別されません。この機能に関していくつか質問があります。

  1. これはすべてのデータベースで同じですか、それともSQLサーバーに固有ですか?
  2. 私はこれまでlower関数を使用して、テキスト比較が鈍感であることを確認してきました。同じことに従うのはまだ良い考えですか?
  3. SQL Serverで大文字と小文字を区別する比較を行うにはどうすればよいですか?
  4. なぜ'='演算子のデフォルトで大文字と小文字を区別しない比較?
22
rkg

いいえ、大文字と小文字の区別は等号とは関係ありません。

大文字と小文字の区別は、データベースの照合によって決定されます-- 詳細についてはドキュメントを参照してください

25
OMG Ponies

大文字と小文字の区別は照合のみに依存します。各'='操作内で照合を指定できます

SELECT  *
  FROM  [Table_1] a inner join
        [Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
12
pcofre

これまで、テキスト比較が鈍感になるように、lower関数を使用してきました。同じことに従うのはまだ良い考えですか?

絶対違う。これを行うと、通常、インデックスの使用ができなくなります。プレーンオールド=(または<または>など)は、選択した照合に応じて機能するかどうかに応じて機能します。 「安全のために」これを行わないでください。テストはあなたがそれを正しく持っていることを確認します。

5
lll

SQL Serverでの操作の大文字と小文字の区別は、インストール中にデータベースの照合順序を設定するときに決定されます。その時点で、SQL Serverを大文字と小文字を区別しない(デフォルト)または大文字と小文字を区別してインストールすることを選択できます。

http://msdn.Microsoft.com/en-us/library/aa197951(v = sql.80).aspx

3
Jake Hall

比較がどのように行われるかは、フィールドに選択した照合順序によって異なります。大文字と小文字を区別する照合を使用するようにフィールドを変更すると、比較は大文字と小文字を区別します。

デフォルトでは、フィールドはデータベースの照合セットを使用しますが、各フィールドに独自の照合設定を設定できます。

1
Guffa