When you use double quotes for strings in Perl, Perl looks through your
strings for variables like $foo, and replaces them with the current value of
$foo. This is called interpolation. When you use single quotes, it
considers your string a literal.
So when you use double quotes, you need to escape any special characters
like $ % " or @. When you use single quotes, the only character you have to
worry about is '. Here are ways you could make this string work.
Double quotes with special characters escaped (due to interpolation)
"SELECT 'David!' LIKE '\%D\%v\%'"
Single quotes with double quote usage for the SQL quoting (no escaping
required)
'SELECT "David!" LIKE "%D%v%"'
Single quotes with single quotes escaped for the SQL quoting
'SELECT \'David!\' LIKE \'%D%v%\''
Keep in mind that interpolation is work, so using one of the single quotes
strings which does not search your string for variables to replace is going
to be higher performance than the double quoted version, although the
difference may be a little or a lot depending on how many times the string
is interpreted (if it is in a loop or something).
----- Original Message -----
From: "Siegfried Heintze" <[EMAIL PROTECTED]>
To: <mysql@lists.mysql.com>
Sent: Friday, July 22, 2005 4:03 PM
Subject: How to use Like Clause in Perl? Works fine in MySQL control center!
I'm having trouble getting the like clause to work. It seems to work fine
in
the MySQL Control Center 9.4.beta. I'm using MySQL 4.0.23-debug.
use DBH;
my $sth = DBH->prepare("SELECT 'David!' LIKE '%D%v%'");
$sth->execute();
my $row;
print join(@$row,",")."\n" while ($row = $sth->fetch);
This does not print a "1" in perl. It just prints a ",".
I've posted a query on this in [EMAIL PROTECTED] with no luck.
Anybody have any suggestions?
Thanks,
Siegfried
Here is DBH.pm. Below that is my original post in [EMAIL PROTECTED]
package DBH;
use DBI;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(DBH); # Symbols to be exported by default
our @EXPORT_OK = qw(); # Symbols to exported by request
our $VERSION = 0.1;
our $dbh;
sub DBH{
unless ( $dbh && $dbh->ping ) {
$dbh = DBI->connect ( 'dbi:mysql:dbname=hotjobs;host=SALES', 'xyz',
'xyz' ) ;
die DBI->errstr unless $dbh && $dbh->ping;
}
return $dbh;
}
1;
----------------------------------------------------------------------------
--------------------------------------------------------
The following code works with Activestate perl 8.4/MySQL. If I comment the
second line, however, it does not work. No error messages and no results.
If I use the MySQL Enterprise console and type in my first SELECT
statement
that includes the LIKE clause, it works.
I'm stumped. There must be something strange with that "%", but I cannot
figure it out.
Anyone got any suggestions?
Siegfried
my $sJobTitle = "SELECT sName FROM keywords ORDER BY sName WHERE sName
LIKE
'%'";
$sJobTitle = q[SELECT sName FROM keywords ORDER BY sName];
my $sth = DBH->prepare($sJobTitle);
$sth->execute();
my $row;
while ($row = $sth->fetch){
push @sResult,"<li>".join( "", @$row)."</li>\n";
}
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]