在 Perl 中使用 % 查询文本的 SQL LIKE

标签 sql perl dbi

我有以下代码:

$query = "SELECT tac FROM lte_modems WHERE tac = ?";
$check_name = $dbh->prepare($query);
$my_name = "Jo"         
$check_name->execute($my_name);
my @result = $check_name->fetchrow_array();

效果很好。 我想更改 SQL 查询以获取以“Jo”开头的名称: 即我的 SQL 查询应该是

   $query = "SELECT tac FROM lte_modems WHERE tac LIKE '?%'";

但这行不通。有什么帮助吗?也许我需要转义一些字符?

提前致谢

最佳答案

您需要在参数中包含 %。否则,您将获得额外的报价,因为 DBI 会为您处理。

my $sth = $dbh->prepare( "SELECT tac FROM lte_modems WHERE tac LIKE ?" );
$sth->execute( $my_name . '%' );

真正的诀窍是始终让 DBI 做所有的引用,而自己一个也不做。 DBI 不关心占位符 ? 是否在等于 =LIKEREGEXP 等之后别的。它会正确转义引号并在必要时添加引号。你根本不想干涉。

关于在 Perl 中使用 % 查询文本的 SQL LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43391963/

相关文章:

sql - check和外键有什么区别?

perl - 使用 SOAP 和 Perl 调用带参数的函数

perl - 使用 perl 从一行中删除由空格分隔的每个第二个单词?

sql - Perl DBI SQL 字符串错误

database - 如何使用 DBI 从数据库中获取单个计数值?

mysql - 根据 mySQL 中的有效起始日期查找具有今天有效价格的行

mysql - 在多个连接表上使用 MySQL GROUP_CONCAT 或 PIVOT

mysql - 显示每个唯一 ID 的所有重复最大值

php - 比较 PERL md5() 和 PHP md5()

mysql - Perl DBI 无法找出要使用的驱动程序