我希望能够将某些内容传递给 SQL 查询,以确定我是否只想选择某个列为空的那些。如果我只是构建一个查询字符串而不是使用绑定(bind)变量,我会这样做:
if ($search_undeleted_only)
{
$sqlString .= " AND deleted_on IS NULL";
}
但我想使用绑定(bind)查询。这会是最好的方法吗?
my $stmt = $dbh->prepare(...
"AND (? = 0 OR deleted_on IS NULL) ");
$stmt->execute($search_undeleted_only);
最佳答案
是的;一个相关的技巧是,如果你有 X 个潜在的过滤器,其中一些是可选的,就是让模板说 " AND ( ?=-1 OR some_field = ? ) "
, 并创建一个特殊的函数来包装执行调用并绑定(bind)所有第二个 ?s。 (在这种情况下,-1 是一个特殊值,意思是“忽略此过滤器”)。
Paul Tomblin 的更新:我编辑了答案以包含评论中的建议。
关于sql - 如何使用 Perl 的 DBI 中的绑定(bind)查询来选择为空的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433632/