- ベストアンサー
mysqlのlike binaryでの前方一致
mysql4.0.25でlike binaryを使って日本語検索をしていますが インデックスを使いたいので前方一致で条件を作ると検索されません。 文字コードはeuc-jpです。 部分一致でしか検索にひっかからないのですが 文字コードなど関係があるのでしょうか?
- みんなの回答 (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`でも問題ないです。 なにか入力みすか勘違いのような気がしますが・・・
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>インデックスを使いたいので前方一致で条件を作ると検索されません。 >文字コードはeuc-jpです。 >部分一致でしか検索にひっかからないのですが ちょっと状況がわからないのですが 'あ%'だとひっかからないけど '%あ%'だとヒットするという意味でしょうか?
補足
説明不足ですみません。 例えば「あいうえお」だとすると 'あ%'の一文字だとひっかかりますが、'あい%'だとひっかかりません。 '%あい%'や'%あいう%'ではひっかかります。
お礼
ご回答ありがとうございます。 何度も確認をしているので、入力ミスはないと思うのですが… やはりバージョンの関係があるのでしょうか… もう少し調べてみます。 ありがとうございました!!