1. ホーム
  2. mysql

[解決済み] LIKEワイルドカードを使用してカラム内を検索(大文字・小文字を区別しない)するにはどうすればよいですか?

2022-03-15 07:49:57

質問内容

いろいろ見て回ったのですが、目的のものが見つからなかったので、ここに書いておきます。

SELECT * FROM trees WHERE trees.`title` LIKE  '%elm%'

これは問題なく動作しますが、ツリーの名前がElmやELMなどである場合はうまくいきません。

このワイルドカード検索でSQLの大文字と小文字を区別しないようにするにはどうしたらいいですか?

MySQL5とApacheを使っています。

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

SELECT  *
FROM    trees
WHERE   trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'

実は COLLATE UTF8_GENERAL_CI をカラムの定義に追加すれば、これらのトリックをすべて省略できます:自動的に動作します。

ALTER TABLE trees 
 MODIFY COLUMN title VARCHAR(…) CHARACTER 
 SET UTF8 COLLATE UTF8_GENERAL_CI. 

また、このカラムのインデックスを再構築し、先頭の'%'なしでクエリに使用できるようにします。