在 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 使比较 不区分大小写