SQL LIKE与Perl中的文本的%查询

mou*_*iec 3 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();
Run Code Online (Sandbox Code Playgroud)

哪作得很好.我想更改SQL查询以获取以"Jo"开头的名称:即我的SQL查询应该是

   $query = "SELECT tac FROM lte_modems WHERE tac LIKE '?%'";
Run Code Online (Sandbox Code Playgroud)

但这没有成功.任何帮助请?也许我需要逃避一些角色?

提前致谢

sim*_*que 7

您需要%在参数中包含该内容.否则,当DBI为您处理时,您将获得额外的报价.

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

诀窍在于总是让DBI做所有引用而不是自己做任何事情.DBI不关心,如果占位符?是后一个等号=,一个LIKE或一个REGEXP或别的东西.它正确地转义引号并在必要时添加引号.你根本不想干涉它.