gpt4 book ai didi

postgresql - Symfony2 Doctrine - PostgreSQL 的 ILIKE 子句?

转载 作者:行者123 更新时间:2023-11-29 11:26:21 25 4
gpt4 key购买 nike

我目前正在使用 symfony2、doctrine 2.3 和 PostgreSQL 9。我已经搜索了几个小时,想看看我究竟如何使用 QueryBuilder 进行 ILIKE 选择

他们似乎只有LIKE。不过,在我的情况下,我搜索的是不区分大小写的。到底是怎么做到的?

// -- this is the "like";
$search = 'user';
$query = $this->createQueryBuilder('users');
$query->where($query->expr()->like('users.username', $query->expr()->literal('%:username%')))->setParameter(':username', $search);


// -- this is where I get "[Syntax Error] line 0, col 86: Error: Expected =, <, <=, <>, >, >=, !=, got 'ILIKE'
$search = 'user';
$query = $this->createQueryBuilder('users');
$query->where('users.username ILIKE :username')->setParameter(':username', $search);

最佳答案

我不知道 Symfony,但你可以替代

a ILIKE b

lower(a) LIKE lower(b)

您也可以尝试运算符 ~~*,它是 ILIKE 的同义词它的运算符优先级略低,因此您可能需要在 ILIKE

不需要的情况下为连接的字符串添加括号
a ILIKE b || c

成为

a ~~* (b || c)

The manual about pattern matching, starting with LIKE / ILIKE.

我认为这个人遇到了同样的问题并得到了答案:
http://forum.symfony-project.org/viewtopic.php?f=23&t=40424

显然,您可以使用 SQL 供应商特定的函数扩展 Symfony2:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/cookbook/dql-user-defined-functions.html

我不喜欢 ORM 和框架为了保持“可移植性”而牺牲 Postgres 的丰富功能(这几乎行不通)。

关于postgresql - Symfony2 Doctrine - PostgreSQL 的 ILIKE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com