MySQLで全角と半角を区別せずLIKE検索する方法

SELECT * FROM hoge WHERE name LIKE '%ABC%';
よくあるLIKEを利用した全文検索のSQLはこのようになります。

この場合ですと name の中身が`ABC`の場合はマッチしますが、`ABC`の場合はマッチしないので非常に厄介です。
ローマ字だけではなく数字、カタカナ、記号も同様でMySQLには変換する関数が無いので自前で行おうとした場合はストアドプロシージャを作らなければなりません。

そんなときには以下のような形に変えましょう。
SELECT * FROM hoge WHERE name collate utf8_unicode_ci LIKE '%ABC%';
LIKEの前に`collate utf8_unicode_ci`を付けるだけでローマ字(大文字/小文字 全角/半角)、数字、カタカナ、記号全てで半角、全角両方にマッチするようになります。
ストアドプロシージャを作るよりもはるかに楽ですね。
EXPLAIN をしたわけでは無いですが体感では速度はそんなに違いは無かったです。

ただし「つ」と「っ」や「は」「パ」「バ」などの濁点もマッチしてしまうのでここだけ注意ですね。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG