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

mysql:13701

From: YuGo <YuGo <yu.gotou@xxxxxxxxxx>>
Date: Mon, 29 Jan 2007 12:12:05 +0900
Subject: [mysql 13701] Re: like で抽出する場合の注意点

これは、エンコーディングがlatin1のMySQLサーバーで、	2バイトのujisを扱お
うとするため起きるトラブルでしょう。
mysql>SHOW VARIABLES LIKE 'char%';
の結果がcharacter_set  latin1なら、設定を変えたほうがいいと思います。


Mamiya Masataka wrote:
> 皆さんこんにちは。茨城の間宮と申します。
> いつも貴重な情報をありがとうございます。
> 
> まず最初に、こちらの環境は、
> 	Windows XP
> 	mySQL 4.0.18
> 	Apache 2.0.59
> 	perl 5.8.6
> となっています。
> 
> 文字コードの問題は、今まで何度もお世話になりました。
> そのたびに文字コードの問題は今後どういう方向へ行くのだろうと
> 改めて考えさせられています。
> 少し前から私も、一部のデータで SJIS から EUC へ文字コードを変更しました。
> サイト全体は SJIS で記述してあったりなので、
> 表示の際 Jcode.pm で SJIS に直して出力するなど面倒なことをやっています。
> 
> さて、like で検索をさせるさいの問題なのですが、
> 
> あるテキストデータ( euc で保存してある text にあるデータデータ)について
> 検索をかる処理を次のようにしています。
> like を使い、検索文字列の前後を '%' ではさんでいます。
> 
> たとえば検索文字列が $s_word にあるとすれば
> $q_s_word = quotemeta $s_word;
> $q_s_word = '%'.$q_s_word.'%';
> とし、
> text like "$q_s_word"
> で抽出をかけます。
> このとき困ったことが起こっております。
> 
> 力(\xCE\xCF)が含まれるデータをを抽出しようとすると
> 次の文字列が含まれるデータにも一致してしまうようです。
> の様子は、(\xA4\xCE\xCD\xBB\xD2\xA4\xCF\xA1\xA2)
> これは、上の文字列の中に \xCE\xCF が含まれているからのようです。
> 途中に別のデータがあるのですが、含まれているからのようです。
> 
> さらにいろいろ試してみますと、
> のは(\xA4\xCE\xA4\xCF)
> には一致しませんでした。
> 
> このような状況は仕様なのでしょうか?
> それとも問題解決のための方法がありますでしょうか。
> 
> 皆様のお知恵をお借りしたいと思います。
> どうぞよろしくお願いします。
> 
> 
> 
> --
> Mamiya masataka from IBARAKI JAPAN
> 0297-58-6313 090-4430-2918
> mamiya@xxxxxxxxxx
> masataka-orange@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]