有没有办法在PostgreSQL中编写不区分大小写的查询,例如,我想下面3个查询返回相同的结果。
SELECT id FROM groups where name='administrator'
SELECT id FROM groups where name='ADMINISTRATOR'
SELECT id FROM groups where name='Administrator'
有没有办法在PostgreSQL中编写不区分大小写的查询,例如,我想下面3个查询返回相同的结果。
SELECT id FROM groups where name='administrator'
SELECT id FROM groups where name='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'
其他回答
在比较之前,使用LOWER函数将字符串转换为小写。
试试这个:
SELECT id
FROM groups
WHERE LOWER(name)=LOWER('Administrator')
你可以用ILIKE。即。
SELECT id FROM groups where name ILIKE 'administrator'
-- Install 'Case Ignore Test Extension'
create extension citext;
-- Make a request
select 'Thomas'::citext in ('thomas', 'tiago');
select name from users where name::citext in ('thomas', 'tiago');
我喜欢在这种情况下工作:
SELECT id
FROM groups
WHERE name ILIKE 'Administrator'
一种经过测试的方法是使用~*
如下面的例子所示
SELECT id FROM groups WHERE name ~* 'administrator'