MYSQL

MySQLで濁点・半濁点を区別して部分一致検索を行う方法

2021年1月25日

MySQLで濁点・半濁点を区別して部分一致検索を行う方法と書かれた画像

 

あなた
MySQLでパパイヤという単語で部分一致で抽出したいのですが、「ハハイヤ」も抽出されてしまいます。

「パパイヤ」「ハハイヤ」はまったく違うので濁音や半濁音を区別して検索する方法を知りたいです。「

 

MySQLで部分一致検索をするときにたまに出くわすのがこの問題です。

今回は「濁音や半濁音を区別した部分一致検索」をする方法を紹介します。

 

【環境】

MySQL 5.6

 

MySQLで濁点・半濁点を区別して部分一致検索を行う必要があった

 

部分一致の検索ですぐに思う浮かぶのが「LIKE検索」だと思います。

しかしMySQLのLIKE検索では濁点や半濁点は区別しません。

 

例えば以下のSQLを検索した場合は「カルビ」も「カルピス」も抽出されます。

 

SELECT * FROM ng_words 'カルビ' like concat('%', ng_words.word, '%');

 

カルビとカルピスとかまじで全然違いますよね。

日本語は1文字違うだけでかなり意味が変わってしまう言葉がたくさんあります。

 

そうなると言語の部分一致検索がゆるいと思わぬバグを生んでしまうこともあるのです。

僕もその対応に迫られたので対処方法を記しておきます

 

【結論】BINARY検索で手軽におこなう

 

以下のコードだと濁点や半濁点を区別してくれます。

ただしカタカナとひらがなも区別されるので注意です。

あくまでバイナリの比較になります。

 

SELECT * FROM ng_words 'カルビ' like BINARY concat('%', ng_words.word, '%');

 

つまり上記の検索の場合は「カルピス」もひっかかりませんし、「かるび」もひっかかりません。

 

正確に抽出したい場合はBINARYでOK

 

濁点は区別したいけど、ひらがな・カタカナは区別したいなんて場合は他の手段を取る必要があります。

しかし正確に抽出したい場合はBINARYでOKかなと思います。

 

今回は以上です。

 

プログラミングスクールに関する情報

【無料あり】プログラミングスクールおすすめランキング【WEBエンジニアになりたい方向け】と書かれた画像
【無料あり】プログラミングスクールおすすめランキング【WEBエンジニアになりたい方向け】

  あなたプログラミングスクールに通いたいけどたくさんありすぎてどこがいいのかわかりません。   最近はエンジニアブームということもありプログラミングスクールが増えました。 一方でたくさんありすぎてど ...

続きを見る

フリーランス
無料あり:フリーランスを目指せるプログラミングスクールランキング【体験をもとに徹底分析しました】

  あなたフリーランスエンジニアを目指すことができるプログラミングスクールってありますか?   最近では、高年収や働きやすさの魅力からフリーランスエンジニアを目指す方も増えてきまし ...

続きを見る

返金保証ありのプログラミングスクールランキング【エンジニアが選びました】と表示されたパソコンの画面
返金保証ありのプログラミングスクールランキング【エンジニアが選びました】

  あなた返金保証がついているオススメのプログラミングスクールってありますか?   結論から話すと、返金保証つきのプログラミングスクールランキングは次の通りです。   1位:DMMWEBキャンプ  【 ...

続きを見る

WEB系自社開発企業にいけるプログラミングスクールランキング【現役エンジニアおすすめ】と書かれた画像
WEB系自社開発企業にいけるプログラミングスクールランキング【現役エンジニアおすすめ】

  あなたWEB系の自社開発企業に就職したいです。 オススメのスクールを教えて下さい。   結論から話すと、WEB系自社開発に行きやすいスクールのランキングは以下の通り。   第1位:テックアカデミー ...

続きを見る

プログラミンングスクールに無料で通うならココ【現役エンジニアおすすめ】と書かれた画像
プログラミンングスクールに無料で通うならココ【現役エンジニアおすすめ】

  あなたプログラミングスクールに通いたいけどどのスクールも何十万もして通えません。コスパよくエンジニアになれるスクールはありますか?   今回はコスパが良いどころか完全に無料でプ ...

続きを見る

-MYSQL

© 2021 エンジニアてんし君ブログ