我有以下代码:
$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 不关心占位符 ?
是否在等于 =
、LIKE
或 REGEXP
等之后别的。它会正确转义引号并在必要时添加引号。你根本不想干涉。
关于在 Perl 中使用 % 查询文本的 SQL LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43391963/