我尝试使用以下代码从表中选择一些行(PostgreSQL):
my $kadadbh = DBI->connect(
"dbi:Pg:dbname=$dbname;host=$host",
$dbuser,
$dbpasswd
);
my $subject_nar_sel= $kadadbh->prepare(
'SELECT * FROM subject WHERE SUBSTRING(CAST(id AS text),1,6) = "?";'
);
$nar=605812;
$subject_nar_sel->execute($nar);
但是我收到了一个错误:
在需要0时使用1个绑定变量调用
当我交换单引号和双引号时,我得到同样的错误:
"SELECT * FROM subject WHERE SUBSTRING(CAST(id AS text),1,6) = '?';"
我该如何解决这个问题?
答案 0 :(得分:6)
您当前的查询正在测试SUBSTRING(CAST(id AS text),1,6)
是否匹配文字字符串可疑命名的引用标识符"?"
。因此,即使bind参数具有字符串类型:
?
SELECT * FROM subject WHERE SUBSTRING(CAST(id AS text),1,6) = ?