有没有办法在PostgreSQL中编写不区分大小写的查询,例如,我想下面3个查询返回相同的结果。

SELECT id FROM groups where name='administrator'

SELECT id FROM groups where name='ADMINISTRATOR'

SELECT id FROM groups where name='Administrator'

当前回答

限制使用ILIKE

select id from groups where name ILIKE 'adminstration';

如果你来,expressjs的背景和名称是一个变量 使用

select id from groups where name ILIKE $1;

其他回答

用ILIKE代替LIKE

SELECT id FROM groups WHERE name ILIKE 'Administrator'
select id from groups where name in ('administrator', 'ADMINISTRATOR', 'Administrator')

一种经过测试的方法是使用~*

如下面的例子所示

SELECT id FROM groups WHERE name ~* 'administrator'

如果你不仅想要大写/小写,还想要变音符,你可以实现你自己的func:

CREATE EXTENSION unaccent;

CREATE OR REPLACE FUNCTION lower_unaccent(input text)
 RETURNS text
 LANGUAGE plpgsql
AS $function$
BEGIN
    return lower(unaccent(input));
END;
$function$;

调用是then

select lower_unaccent('Hôtel')
>> 'hotel'

你可以用ILIKE。即。

SELECT id FROM groups where name ILIKE 'administrator'