SQLサーバー'='
コンパレータをテキスト比較に使用する場合、大文字と小文字は区別されません。この機能に関していくつか質問があります。
lower
関数を使用して、テキスト比較が鈍感であることを確認してきました。同じことに従うのはまだ良い考えですか?'='
演算子のデフォルトで大文字と小文字を区別しない比較?いいえ、大文字と小文字の区別は等号とは関係ありません。
大文字と小文字の区別は、データベースの照合によって決定されます-- 詳細についてはドキュメントを参照してください 。
大文字と小文字の区別は照合のみに依存します。各'='
操作内で照合を指定できます
SELECT *
FROM [Table_1] a inner join
[Table_2] b on a.Col1=b.Col2 collate Modern_Spanish_CS_AI
これまで、テキスト比較が鈍感になるように、lower関数を使用してきました。同じことに従うのはまだ良い考えですか?
絶対違う。これを行うと、通常、インデックスの使用ができなくなります。プレーンオールド=(または<または>など)は、選択した照合に応じて機能するかどうかに応じて機能します。 「安全のために」これを行わないでください。テストはあなたがそれを正しく持っていることを確認します。
SQL Serverでの操作の大文字と小文字の区別は、インストール中にデータベースの照合順序を設定するときに決定されます。その時点で、SQL Serverを大文字と小文字を区別しない(デフォルト)または大文字と小文字を区別してインストールすることを選択できます。
http://msdn.Microsoft.com/en-us/library/aa197951(v = sql.80).aspx
比較がどのように行われるかは、フィールドに選択した照合順序によって異なります。大文字と小文字を区別する照合を使用するようにフィールドを変更すると、比較は大文字と小文字を区別します。
デフォルトでは、フィールドはデータベースの照合セットを使用しますが、各フィールドに独自の照合設定を設定できます。