MySQL では、文字列比較ではデフォルトで大文字と小文字が区別されません。ただし、特定の関数を使用するか、サーバー構成を変更することで、大文字と小文字を区別した文字列比較を実行できます。
-
BINARY 演算子の使用: BINARY 演算子を使用すると、文字列を比較するときに文字列をバイナリ データとして扱うことができ、大文字と小文字を区別した比較が可能になります。たとえば、次のように
BINARY
キーワードを使用して、文字列列または定数を別の文字列と比較します。SELECT * FROM table_name WHERE BINARY column_name = 'value';
-
このクエリは、
column_name
大文字と小文字を区別して列を比較します。 -
サーバー構成の変更: MySQL サーバーの構成を変更することで、大文字と小文字を区別するグローバルな比較を実装できます。構成ファイル (例
my.cnf
または)my.ini
に次のパラメータを追加または変更します。[mysqld] lower_case_table_names = 0
-
大文字と小文字を区別する場合は 0 に設定し
lower_case_table_names
、比較のためにすべてのテーブル名とデータベース名を小文字に変換する場合は 1 に設定し、すべてのテーブル名とデータベース名を小文字のストレージに変換する場合は 2 に設定し、元のテーブル名とデータベース名を保持します。彼らの実態として。 -
基礎となる原則は、MySQL が文字列比較を実行するときに特定の比較ルールとアルゴリズムを使用するということです。デフォルトでは、MySQL は文字列比較に大文字と小文字を区別しない比較ルールを使用します。BINARY 演算子を使用すると、MySQL は文字列をバイナリ データとして扱い、バイトごとに比較するため、大文字と小文字を区別した比較が可能になります。サーバー構成を変更する場合、MySQL は構成されたルールに従って文字列比較を実行し、大文字と小文字が区別されるかどうかを判断します。
BINARY 演算子の使用またはサーバー構成の変更は、クエリのパフォーマンスやアプリケーションのその他の側面に影響を与える可能性があるため、使用の影響と要件を慎重に検討する必要があることに注意してください。