sql - 如何使用 Perl 的 DBI 中的绑定(bind)查询来选择为空的行?

标签 sql perl dbi

我希望能够将某些内容传递给 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/

相关文章:

perl - 如何查询 sqlite 的某些行,即将其分成页面(perl DBI)

mysql - SQL:用连续值替换非连续值

sql - 连接来自单独数据库的查询

perl - 无法在 docker 中安装 perl 模块 PerlIO::locale

perl - 如何使用 Class::DBI->sequence() 方法在 perl 中自动填充 'id' 字段?

mysql - fetchrow_hashref 还是 fetchhash?

MySQL 为多行生成 UUID()

sql - 将地理转换为几何 SQL Server 2008R2

Perl 解析器对 sort 和 uniq 的行为很奇怪

perl - 如何将 XML 元素 A 添加到没有 A 作为子元素的元素 B