我在postgres表中有这个简单的数据(数据类型是字符变化):
48
2
L
4XL
25.0
25
7.0
我有这个带有regexp匹配的sql查询(我希望匹配数字像7.0或48这样的值):
SELECT * FROM table WHERE ss.sizecode ~ E'^\\s*[\\d\\.]+\\s*$'
这在命令行客户端psql中是完美的,
但在perl代码中不起作用:
my $sth = $dbh->prepare(
q(SELECT * FROM table WHERE ss.sizecode ~ E'^\\s*[\\d\\.]+\\s*$')
);
$sth->execute
while ( my @row = $sth->fetchrow_array() ) {
# no data i want
}
答案 0 :(得分:1)
字符串文字
q(SELECT * FROM table WHERE ss.sizecode ~ E'^\\s*[\\d\\.]+\\s*$')
生成字符串
SELECT * FROM table WHERE ss.sizecode ~ E'^\s*[\d\.]+\s*$'
获得
SELECT * FROM table WHERE ss.sizecode ~ E'^\\s*[\\d\\.]+\\s*$'
你需要
q(SELECT * FROM table WHERE ss.sizecode ~ E'^\\\\s*[\\\\d\\\\.]+\\\\s*$')