[前][次][番号順一覧][スレッド一覧]

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]