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

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 の値はどのようにすれば良いのでしょうか?
>


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