Postgre 正则表达式在使用 dbi 的 perl 代码中不起作用

Postgre regexp does not work in perl code using dbi

我在 postgres 中有这个简单的数据 table(数据类型是字符变化的):

48
2
L
4XL
25.0
25
7.0

我有这个 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
}

字符串文字

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