是否有一种标准方法可以在 SQL 查询中绑定(bind)(标量)数组?我想绑定(bind)到 IN
子句中,如下所示:
SELECT * FROM junk WHERE junk.id IN (?);
我碰巧使用 Perl::DBI
它将参数强制为标量,所以我最终得到了无用的查询,例如:
SELECT * FROM junk WHERE junk.id IN ('ARRAY(0xdeadbeef)');
说明:我将查询放入其自己的 .sql
文件中,因此字符串已经形成。如果答案提到动态创建查询字符串,我可能会进行搜索并替换。
编辑:这个问题有点像 Parameterizing a SQL IN clause? 的重复。 。我最初认为它应该这样关闭,但看起来它正在积累一些很好的 Perl 特定信息。
最佳答案
如果您不喜欢那里的 map ,可以使用“x”运算符:
my $params = join ', ' => ('?') x @foo;
my $sql = "SELECT * FROM table WHERE id IN ($params)";
my $sth = $dbh->prepare( $sql );
$sth->execute( @foo );
“?”两边需要括号因为这会强制“x”位于列表上下文中。
阅读“perldoc perlop”并搜索“二进制“x””以获取更多信息(位于“乘法运算符”部分)。
关于sql - 是否有数组的 SQL 参数绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513818/