在 MySql 数据库中,如何在不关心 Perl DBI 中的字段大小写的情况下查询字段
In MySql database, how to query on field without bothering about case of fields in Perl DBI
我在 perl DBI 中有以下查询 -
$query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND servicename = ?");
$query->execute( $domain, $service );
其中服务名称可以不区分大小写,即如果我现有的服务名称是 'Storage' 那么它也应该获取 'storage' 的结果。
我试过下面的代码 -
query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND servicename = lower(?)");
$query->execute( $domain, $service );
但它不适用于 servicename = 'storage'。
有没有我遗漏的指示?
您还应该对列值使用 lower
函数:
query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND lower(servicename) = lower(?)");
$query->execute( $domain, $service );
您可以使用Mysql的ilike
功能
不区分大小写
query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND servicename = ilike(?)"
);
$query->execute($domain, $service);
ilike
使比较 不区分大小写。
我在 perl DBI 中有以下查询 -
$query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND servicename = ?");
$query->execute( $domain, $service );
其中服务名称可以不区分大小写,即如果我现有的服务名称是 'Storage' 那么它也应该获取 'storage' 的结果。
我试过下面的代码 -
query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND servicename = lower(?)");
$query->execute( $domain, $service );
但它不适用于 servicename = 'storage'。
有没有我遗漏的指示?
您还应该对列值使用 lower
函数:
query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND lower(servicename) = lower(?)");
$query->execute( $domain, $service );
您可以使用Mysql的ilike
功能
不区分大小写
query = $dbh->prepare(
"SELECT * FROM domain WHERE domainname = ? AND servicename = ilike(?)"
);
$query->execute($domain, $service);
ilike
使比较 不区分大小写。