• ベストアンサー

mysqlのlike binaryでの前方一致

mysql4.0.25でlike binaryを使って日本語検索をしていますが インデックスを使いたいので前方一致で条件を作ると検索されません。 文字コードはeuc-jpです。 部分一致でしか検索にひっかからないのですが 文字コードなど関係があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>mysql4.0.25 かなり古いバージョンので、試す環境がないのですが MySQL5系でチェックすると CREATE TABLE `tbl`(`data` VARCHAR(20)) CHARACTER SET `ujis` COLLATE `ujis_japanese_ci` ; INSERT INTO `tbl` VALUES('あいうえお'),('あういおえ'),('おあういえ'),('えあいうお'),('かきくけこ'); と、しておいて SELECT * FROM `tbl` WHERE `data` LIKE BINARY 'あ%'; SELECT * FROM `tbl` WHERE `data` LIKE BINARY '%あ%'; SELECT * FROM `tbl` WHERE `data` LIKE BINARY 'あい%'; SELECT * FROM `tbl` WHERE `data` LIKE BINARY '%あい%'; をそれぞれ実行しても、想定どおりの戻りがあるので特に問題なさそうですね COLLATEについては`ujis_bin`でも問題ないです。 なにか入力みすか勘違いのような気がしますが・・・

michaeller
質問者

お礼

ご回答ありがとうございます。 何度も確認をしているので、入力ミスはないと思うのですが… やはりバージョンの関係があるのでしょうか… もう少し調べてみます。 ありがとうございました!!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>インデックスを使いたいので前方一致で条件を作ると検索されません。 >文字コードはeuc-jpです。 >部分一致でしか検索にひっかからないのですが ちょっと状況がわからないのですが 'あ%'だとひっかからないけど '%あ%'だとヒットするという意味でしょうか?

michaeller
質問者

補足

説明不足ですみません。 例えば「あいうえお」だとすると 'あ%'の一文字だとひっかかりますが、'あい%'だとひっかかりません。 '%あい%'や'%あいう%'ではひっかかります。

関連するQ&A