mysql:1304
From: "Douglas MacDougall" <"Douglas MacDougall" <mac@xxxxxxxxxx>>
Date: Wed, 10 Nov 1999 12:00:57 +0900
Subject: [mysql 01304] RE: % を使用したマッチについて
すいません、日本語あまりできないけど。。。 このコードを見てください: > perl $test1='2\%'; $test2='%2\%%'; $statement0="select msg from sems where msg like '%2\%%'"; $statement1="select msg from sems where msg like '%$test1%'"; $statement2="select msg from sems where msg like '$test2'"; print "-----RESULTS-------\n"; print "1st: $statement0\n"; print "2nd: $statement1\n"; print "3rd: $statement2\n"; -----RESULTS------- 1st: select msg from sems where msg like '%2%%' 2nd: select msg from sems where msg like '%2\%%' 3rd: select msg from sems where msg like '%2\%%' それで、1stが select msg from sems where msg like '%2%' と同じと考えていいです これは、2があるのデータと前文マッチする mysqlで "\" SELECT するときは"\\"使わないといけない。 PERLも: $a='\%'; # \% $b="\%"; # % $test='%2\\%%'; または $test="\%2\\\%\%"; としてからOKなると思う。 Douglas MacDougall. >+------+ >| msg | >+------+ >| 2\% | >+------+ > >になります。 Perl を使用してワイルドカードを使用して 2\% にマッチさせよう と >して > >$statement="select msg from sems where msg like '%2\%%'"; >$sth=$dbh->prepare($statement); >$rv=$sth->execute; >print "RV is $rv"; > >としたら RV is 1 となりました。次に > >$test='2\%'; >$statement="select msg from sems where msg like '%$test%'"; >$sth=$dbh->prepare($statement); >$rv=$sth->execute; >print "RV is $rv"; > >としたら、 RV is 0E0 となりました。次に > >$test='%2\%%'; >$statement="select msg from sems where msg like '$test'"; >$sth=$dbh->prepare($statement); >$rv=$sth->execute; >print "RV is $rv"; > >としても RV is 0E0 となります。 > >変数 $test の値はどのようにすれば良いのでしょうか? >