SQL サーバーのサーバー照合順序で大文字と小文字が区別され、データベースで大文字と小文字が区別されない場合、クエリでは大文字と小文字が区別されますか? サーバーの照合ではなくデータベースに基づいているはずだと思っていましたが、短いテストを行ったところ、そうではないようです。誰でも確かに知っていますか?
2 に答える
さて、これはそれを説明していると思います:
識別子の照合は、それが定義されているレベルによって異なります。ログインやデータベース名など、インスタンス レベルのオブジェクトの識別子には、インスタンスの既定の照合順序が割り当てられます。テーブル、ビュー、列名など、データベース内のオブジェクトの識別子には、データベースの既定の照合順序が割り当てられます。変数、GOTO ラベル、一時ストアド プロシージャ、および一時テーブルは、接続コンテキストが 1 つのデータベースに関連付けられているときに作成され、コンテキストが別のデータベースに切り替えられたときに参照されます。したがって、変数、GOTO ラベル、および一時テーブルの識別子は、インスタンスのデフォルトの照合順序にあります。
つまり、パラメーターを含む可能性のある変数は、大文字と小文字を区別しない照合でも大文字と小文字が区別されます。それが私のテストで見られるものです。パラメーターの大文字と小文字には問題がありますが、テーブル/列名の大文字と小文字には問題はありません。
照合を指定できるさまざまなレベルがあります。優先される列レベルでも設定できます。通常、列の照合はデータベースのデフォルトを使用するように設定されています。データベースの作成時に明示的に指定しない限り、デフォルトでサーバーの照合が使用されます。
1 つの照合順序でデータベースを作成してから、データベースの照合順序を変更しても、他の照合順序で定義されている既存の列には影響しないことに注意してください。その時点からそのデータベースに対して作成された列に対してのみ有効になります。したがって、既存の列を変更する必要があります。
どんなテストをしましたか?