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]