浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

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 をしたわけでは無いですが体感では速度はそんなに違いは無かったです。

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

  • この記事いいね! (3)