mysql:12105
From: "Shuichi Tamagawa" <"Shuichi Tamagawa" <shuichi@xxxxxxxxxx>>
Date: Wed, 7 Sep 2005 16:42:37 -0700
Subject: [mysql 12105] Re: MySQL4.1.14でのLIKE演算子
玉川です。 私の環境でも同様の現象が確認できましたので、 新たにバグとして登録しておきました。 http://bugs.mysql.com/bug.php?id=13046 既に'Verified'のステータスになってるので近々 修正されると思います。 -- Shuichi Tamagawa shuichi@xxxxxxxxxx tamagawa@xxxxxxxxxx > -----Original Message----- > From: a2cf@xxxxxxxxxx [mailto:a2cf@xxxxxxxxxx] > Sent: Wednesday, September 07, 2005 4:54 AM > To: ml@xxxxxxxxxx > Subject: [mysql 12103] MySQL4.1.14でのLIKE演算子 > > atsushiです。 > > 2ヶ月ほど前にMySQL4.1.12でのLIKE演算子に関して質問したものです。 > ([mysql 11642] http://bugs.mysql.com/bug.php?id=11650 ) > > その後、これを修正したMySQL4.1.14がダウンロードできるようになったので すが、また新たな問題が発生しました。 > 前回同様、バイト数指定のインデックスを張ったテーブルに対してselectをす ると、値に「_」や「%」を含む時、条件によって検 > 索結果が0件になります。 > 具体的には、以下で作成したテストテーブルで、インデックスに指定した3バ イト目までの部分の値に「_」や「%」を含む時、マッチしなくなります。 > 3バイトより後の部分に「_」や「%」を含む場合は問題ありません。 > また、バイト数指定のインデックスでない場合は、全て問題ありませんでし た。 > > 他の方でも同様の問題は発生しておりますでしょうか? > > 環境: MySQL4.1.14 Linux (x86, glibc-2.2, static, gcc) Standard版 > > ---------------------- > ●テストテーブル作成 > drop table if exists t1; > create table t1(c1 varchar(50) not null, index(c1(3))) engine > = innodb default > character set = cp932; > > insert into t1 values('abcdef'); > insert into t1 values('_bcdef'); > insert into t1 values('a_cdef'); > insert into t1 values('ab_def'); > insert into t1 values('abc_ef'); > insert into t1 values('abcd_f'); > insert into t1 values('abcde_'); > > ●テスト結果 > select * from t1 where c1 like 'ab_def'; →2件 正常 > > select * from t1 where c1 like 'ab\_def'; →0件 異常 「ab_def」のはず > select * from t1 where c1 like 'ab#_def' escape '#'; →0件 異常 同上 > > (インデックスに指定したバイト数より後のところでは正しい) > > select * from t1 where c1 like 'abc_ef'; →2件 正常 > > select * from t1 where c1 like 'abc\_ef'; →1件 正常 > select * from t1 where c1 like 'abc#_ef' escape '#'; →1件 正常 > ---------------------- > > > 上記の「_」を「%」に変えたテストも同様でした。 > また、cp932以外にutf8、ascii、latin1でも同様でした。(%はテストしていま せん) > > sjisにした場合は、「\」の扱いからか、以下のSQLだけ検索結果が異なりまし た。 > これは自分のSQL記述の問題かと思いますが・・・。 > > select * from t1 where c1 like 'abc\_ef'; →0件 異常? 「abc_ef」のは ず > select * from t1 where c1 like 'abc\\_ef'; →0件 異常? 同上 > select * from t1 where c1 like 'abc#_ef' escape '#'; →1件 正常 > > > > 何とぞよろしくお願いします。 > > >
12103 2005-09-07 20:54 [<a2cf@xxxxxxxxxx> ] MySQL4.1.14でのLIKE演算子 -> 12105 2005-09-08 08:42 ┗["Shuichi Tamagawa" <] 12106 2005-09-08 09:03 ┗[<a2cf@xxxxxxxxxx> ]