Postgre regexp在使用dbi的perl代码中不起作用

时间:2015-02-04 16:08:43

标签: regex perl dbi psql

我在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
}

1 个答案:

答案 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*$')