mysql:13696
From: Tasuku SUENAGA <Tasuku SUENAGA <a@xxxxxxxxxx>>
Date: Mon, 29 Jan 2007 04:29:50 +0900
Subject: [mysql 13696] Re: like で抽出する場合の注意点
末永です。 > 力(\xCE\xCF)が含まれるデータをを抽出しようとすると > 次の文字列が含まれるデータにも一致してしまうようです。 > の様子は、(\xA4\xCE\xCD\xBB\xD2\xA4\xCF\xA1\xA2) > これは、上の文字列の中に \xCE\xCF が含まれているからのようです。 > 途中に別のデータがあるのですが、含まれているからのようです。 > > さらにいろいろ試してみますと、 > のは(\xA4\xCE\xA4\xCF) > には一致しませんでした。 latin1系の文字コードでは、 0x49,0x69,0xcc,0xcd,0xce,0xcf,0xec,0xed,0xee,0xef 以上10つのコードで表される文字は、 比較の際同じ文字と判断されてしまいます。 よって、「の様」の4バイトの中間2バイトに「力」がマッチしてしまいます。 もし原因がそれでしたら、 http://www.mysql.gr.jp/mysqlml/mysql/msg/9851 にあるように、 CHAR BINARY/VARCHAR BINARYを用いれば問題が解決できるとは思います。 しかし、バイナリでの一致のため、 マルチバイト文字の部分文字列に一致してしまうといった問題は 解消できないとは思います。 解決案としては 1.MySQL 4.1以降にバージョンアップして適切な文字コード設定を行う 2.Senna(http://qwik.jp/senna/)をN-gramオプションを指定して用いる などがあると思います。 --- Tasuku SUENAGA <a@xxxxxxxxxx>
13695 2007-01-28 12:25 [Mamiya Masataka <xc8] like で抽出する場合の注意点 -> 13696 2007-01-29 04:29 ┣[Tasuku SUENAGA <a@xx] 13700 2007-01-29 11:02 ┃┣[Mamiya Masataka <xc8] 13703 2007-01-30 08:09 ┃┗[とみたまさひろ <tomm] 13711 2007-02-07 02:12 ┃ ┗[Mamiya Masataka <xc8] 13701 2007-01-29 12:12 ┗[YuGo <yu.gotou@xxxxx]