mysql:8373
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Tue, 4 Nov 2003 15:25:13 +0900
Subject: [mysql 08373] Re: カタカナの曖昧検索
とみたです。 On Tue, 04 Nov 2003 12:54:33 +0900 Shinya Kuroda <kuroda@xxxxxxxxxx> wrote: > > おそらく使用している文字コードがシフトJISなのだと思います。 > > その場合は、「default-character-set=sjis」とする必要があります。 > sjisにして、INSERTからやり直してみましたが、同じ結果でした・・・ > 全く原因が分かりません。。 文字コードにばかり目がいってました。もう一度クエリを良く見たら、 > > > mysql> select * from test2 WHERE name LIKE binary '%クロダ%'; となってますが、「binary」が余計です。 select * from test2 where name like '%クロダ%'; とやってみてください。 「binary」をつけると、文字の比較はバイト単位で行なわれます。「クロダ」 をシフトJISコードで表わすと、「83 4E 83 8D 83 5F」ですが、最後のバイト の「5F」は「_」で、LIKE で使用すると「任意の一文字」を表わすワイルドカー ドとして扱われます。一方、「クロカワ」は「83 4E 83 8D 83 4A 83 8F」で す。「83 4E 83 8D 83」まで一致しているために検索条件に引っ掛かります。 「binary」をつけない場合は、ちゃんとシフトJISコードでの一文字(2バイト) 単位で比較されるため、このような現象は起こらないはずです。 -- とみたまさひろ <tommy@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp
8328 2003-10-27 16:25 [Shinya Kuroda <kurod] カタカナの曖昧検索 8356 2003-11-01 01:31 ┗[とみたまさひろ <tomm] 8368 2003-11-04 12:54 ┗[Shinya Kuroda <kurod] -> 8373 2003-11-04 15:25 ┗[とみたまさひろ <tomm] 8374 2003-11-05 00:41 ┗[Shinya Kuroda <kurod]