1. ホーム
  2. マイスル

[解決済み】MySQLでSQLの大文字小文字を区別した文字列比較を行うには?

2022-05-05 17:13:47

質問

大文字と小文字が混在した5文字を返す関数がありますが、この文字列に対してクエリを実行すると、大文字と小文字に関係なく値が返されます。

MySQL の文字列クエリで大文字と小文字を区別するようにするにはどうすればよいですか?

どのように解決するのですか?

http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

<ブロッククオート

デフォルトのキャラクタセットと照合順序は latin1 と latin1_swedish_ci ですので、バイナリ以外の文字列比較はデフォルトで大文字と小文字を区別しません。つまり、col_name LIKE 'a%' で検索すると、Aあるいはaで始まるすべてのカラム値が得られるということです。この検索で大文字小文字を区別するには、オペランドのいずれかが大文字小文字を区別するかバイナリ照合順序になっていることを確認します。例えば、latin1文字セットの列と文字列を比較する場合、COLLATE演算子を使用して、オペランドの照合順序をlatin1_general_csあるいはlatin1_binにすることが可能です。

col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin

あるカラムを常に大文字小文字を区別して扱いたい場合は、大文字小文字を区別する照合順序またはバイナリ照合順序で宣言してください。