WHERE子句中的IN无法使用SQL :: Statement正确解析

问题描述 投票:2回答:1

我正在使用此处提供的示例的略微修改版本:https://metacpan.org/pod/distribution/SQL-Statement/lib/SQL/Statement/Structure.pod

use SQL::Statement;
use Data::Dumper;

my $sql = q{
SELECT c1
     , col2 as c2
     , c3
FROM table1 t1, table2 t2
WHERE t1.c1 = t2.c2
 and  t1.c1 in (11111, 22222, 33333)
GROUP by t1.c1
};

my $parser = SQL::Parser->new('ANSI');
$parser->{RaiseError}=1;
$parser->{PrintError}=0;
my $stmt = SQL::Statement->new($sql, $parser);
print Dumper($stmt->where_hash());

但是当我这样做时,我得到了这个错误,因为它是一个很常见的结构,所以没有意义:

Bad table or column name: '11111,22222,33333' has chars not alphanumeric or underscore! at /home/palert/perl5/perlbrew/perls/perl-5.28.1/lib/site_perl/5.28.1/SQL/Statement.pm line 90.

我想念什么?

sql perl dbi dbd sql-parser
1个回答
0
投票

您可以显示表格定义吗?我认为列类型是char而不是数字。

© www.soinside.com 2019 - 2024. All rights reserved.