半角/全角、大文字/小文字、ひらがな/カタカナがごちゃまぜでもヒットさせるSQL文です。
例えば、抽出対象が「さまぁ~ず」というワードであれば、
・サマァ~ズ
・サまァ~ズ
・さまあ~ず
でもヒットします。
逆に、
・さまーず
・さまぁーず
・さまぁ~ズ
・バカルディ
ではヒットしません。
「さまぁ~ズ」はいけそうな気がしてしまいますが、ズが「ス+濁点」になるので残念ながらヒットしません。
そんなさまぁ~ずのためのSQL文がこちら。
SELECT * FROM `table_name` col_name COLLATE utf8mb4_unicode_ci LIKE '%キーワード%'
COLLATEで照合順序を指定して、LIKE 演算子でマッチさせます。
照合順序はデータベース側でテーブルごとに設定されているので、期待通りの抽出ができているならば指定は不要です。
照合順序の記述方法は、文字コード_言語名_比較法で指定します。
| 文字コード |
utf8、utf8mb4、sjis、latin1 など
utf8mb4 に対応しているのは MySQL 5.5 から。 utf8 と utf8mb4 の違いは、 utf8 3バイトまで対応 utf8mb4 4バイトまで対応 |
| 言語名 |
general、unicode など
unicode 半角全角を区別しないgeneral 半角全角を区別する |
| 比較法 |
ci 大文字小文字を区別しない
cs 大文字小文字を区別する bin すべて区別する ※比較法を bin にした場合、言語名は指定できない |
よりあいまいに検索するなら半角/全角、大文字/小文字を区別しない照合順序にしてあげればいいので、
_unicode_ci にしておけばよいでしょう。
いやいや、「さまぁ~ず」以外認めないよって人は、_bin でガッチガチにしておきましょう。