MySQL の LIKE 演算子で濁音・半濁音を区別して検索する方法

GW を楽しく制作に費やしています。どんどん知識が溜まり、どんどん笑顔になります。楽しくてたまりません!これだけのためにニートに戻りたいと本気で思ってしまいますね。

LIKE 演算子で以下のようにやると濁音や半濁音が区別されません。

1
SELECT * FROM `calorie_datas` WHERE '1' = '2' or name LIKE '%パン%''

これで、カレーパンやメンチカツパンを抽出できるように思えますが、チャーハンまで引っかかってしまうんですねー。

対策としては以下がとても参考になりました。
LIKE で清音と濁音・半濁音を区別する – 教えて!goo
BINARY にしてやると良いみたいですね。

1
SELECT * FROM `calorie_datas` WHERE '1' = '2' or name LIKE BINARY '%パン%''

チャーハンが引っかからなくなりましたね!
SQL をしっかり使えば、PHP で無駄な処理をすることなく、求めているデータを直に高速に抜き出すことができますが、中々頻繁に使うものでもないので勉強がおろそかになりがちですね。

コメント

コメントは受け付けていません。