586 Stimmen

Wie macht man eine "case-insensitive" Abfrage in Postgresql?

Gibt es eine Möglichkeit, in PostgreSQL Abfragen ohne Berücksichtigung der Groß-/Kleinschreibung zu schreiben, z.B. möchte ich, dass die folgenden 3 Abfragen das gleiche Ergebnis liefern.

SELECT id FROM groups where name='administrator'

SELECT id FROM groups where name='ADMINISTRATOR'

SELECT id FROM groups where name='Administrator'

11voto

samzna Punkte 337

ILIKE Arbeit in diesem Fall:

SELECT id 
  FROM groups
 WHERE name ILIKE 'Administrator'

3voto

pink_demon Punkte 41

Wenn Sie nicht nur Groß-/Kleinschreibung sondern auch diakritische Zeichen können Sie Ihre eigene Funktion implementieren:

CREATE EXTENSION unaccent;

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

Der Aufruf ist dann

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

2voto

DEV Tiago França Punkte 498
-- 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');

1voto

James Hudnall Punkte 21

Für eine parametrisierte Abfrage ohne Berücksichtigung der Groß- und Kleinschreibung können Sie die folgende Syntax verwenden:

 "select * from article where upper(content) LIKE upper('%' || $1 || '%')"

-21voto

select id from groups where name in ('administrator', 'ADMINISTRATOR', 'Administrator')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X