PostgreSQL LIKE, Not Like, Wildcards (%, _ ) Eksempler

โšก Smart opsummering

PostgreSQL LIKE matcher tekst mod mรธnstre ved hjรฆlp af to jokertegn - procenttegnet og understregningen. Denne vejledning viser, hvordan man bruger LIKE og NOT LIKE i SELECT-sรฆtninger, med eksempler fra psql og pgAdmin for hvert tilfรฆlde.

  • ๐Ÿ” Core Operator: LIKE sammenligner en kolonne eller et udtryk med et jokertegnmรธnster og returnerer sand ved et match.
  • ๐ŸŒŸ To jokertegn: % matcher nul eller flere tegn; _ matcher prรฆcis รฉt tegn.
  • โœ‹ Omvendt match: Kombinรฉr NOT med LIKE for at returnere rรฆkker, der gรธr det ikke matche mรธnsteret.
  • ๐Ÿ› ๏ธ To grรฆnseflader: Kรธr de samme forespรธrgsler fra psql-kommandolinjen eller grafisk inde i pgAdmin.
  • ๐ŸŽฏ Flugtkarakter: Brug ESCAPE-klausulen til at matche de litterale %- eller _-tegn i mรธnsteret.
  • ๐Ÿค– AI Boost: AI-databasevรฆrktรธjer oversรฆtter sรธgebehov i letforstรฅeligt sprog til LIKE-mรธnstre og foreslรฅr ILIKE, nรฅr der krรฆves matchning uden forskel pรฅ store og smรฅ bogstaver.

PostgreSQL LIKE, Not Like, Wildcards (%, _ ) Eksempler

PostgreSQL LIKE Operatoren matcher tekstvรฆrdier med mรธnstre ved hjรฆlp af jokertegn. Hvis sรธgeudtrykket matcher mรธnsteret, returnerer LIKE trueJokertegn fungerer i WHERE klausul af SELECT, UPDATE, INSERT eller DELETE.

Hvad er PostgreSQL Wildcards?

PostgreSQL understรธtter to LIKE-jokertegn:

  • Procenttegn (%): matcher nul, et eller mange tegn eller cifre.
  • Understregning (_): matcher prรฆcis รฉt tegn eller ciffer.

De to symboler kan kombineres inden for det samme mรธnster. Hvis LIKE bruges uden et af jokertegnene, opfรธrer det sig som lig med (=) operatรธr.

PostgreSQL LIKE-syntaks

Den grundlรฆggende LIKE-syntaks er:

expression LIKE pattern [ ESCAPE 'escape-character' ]
  • udtryk โ€” et tegnudtryk, typisk et kolonne- eller feltnavn.
  • mรธnster โ€” et tegnudtryk, der indeholder jokertegn.
  • escape-karakter โ€” valgfrit. Lader dig matche bogstaveligt % or _ tegn. Nรฅr det udelades, bruges omvendt skrรฅstreg (\) er standard escape-tegnet.

PostgreSQL LIKE med %-jokertegnet

% tegnet matcher nul, et eller flere tegn. Overvej fรธlgende Book bord:

Eksempelbogstabel brugt i LIKE-eksemplerne

For at finde bรธger, hvis navn starter med "Lear", skal du kรธre nedenstรฅende forespรธrgsel.

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

Forespรธrgslen returnerer:

LIKE Lear% forespรธrgselsresultat returnerer matchende bรธger

Sรฅdan finder du bรธger, hvis navn indeholder "af" et sted:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

Forespรธrgslen returnerer:

LIKE %by% forespรธrgselsresultat med matchende bรธger

PostgreSQL LIKE med _ wildcard

_ tegnet matcher prรฆcis รฉt tegn. Fรธlgende forespรธrgsel finder navne, hvor det fรธrste tegn er et hvilket som helst bogstav, efterfulgt af "earn" og derefter et hvilket som helst suffiks:

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

Forespรธrgslen returnerer:

LIKE _earn% forespรธrgselsresultat med prรฆfiksmatch med et enkelt tegn

Et andet eksempel โ€” match enhver tekst, der slutter med "Begynder" plus et mere tegn:

SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';

Forespรธrgslen returnerer:

LIKE %Beginner_ forespรธrgselsresultat matcher efterfรธlgende enkelt tegn

PostgreSQL IKKE SOM OperaTor

Kombinรฉr LIKE med NOT for at returnere rรฆkker, der gรธr det ikke match mรธnsteret. For eksempel, angiv alle bรธger, hvis navn ikke starter med "Post":

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

Forespรธrgslen returnerer:

IKKE SOM Post% resultat eksklusive bรธger, der starter med Post

Kun รฉn bog opfylder betingelsen. Angiv nu alle bรธger, hvis navn ikke opfylder betingelsen. ikke indeholder ordet "Made":

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

Forespรธrgslen returnerer:

IKKE SYNES OM %Made% resultat returnerer tre matchende bรธger

Tre rรฆkker opfylder betingelsen.

Brug af LIKE med pgAdmin

De samme forespรธrgsler kan ogsรฅ kรธres grafisk inde i pgAdmins forespรธrgselsvรฆrktรธj.

% Jokertegn i pgAdmin

Trin 1) Log ind pรฅ pgAdmin.

Trin 2) Klik pรฅ i navigationslinjen til venstre Databaser, og klik derefter pรฅ Demo.

pgAdmin navigationstrรฆ med databaser og demo udvidet

Trin 3) Skriv forespรธrgslen i forespรธrgselseditoren:

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

Trin 4) Klik Udfรธr.

pgAdmin-forespรธrgselsvรฆrktรธjet med knappen Udfรธr pรฅ vรฆrktรธjslinjen

Resultatruden viser de matchende bรธger:

pgAdmin-resultatpanel for LIKE Lear%-forespรธrgsel

Sรฅdan sรธger du efter en bog med "af" et vilkรฅrligt sted i navnet:

Trin 1) Skriv fรธlgende i forespรธrgselseditoren:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

Trin 2) Klik Udfรธr.

pgAdmin-forespรธrgselsvรฆrktรธj kรธrer LIKE %by%-forespรธrgsel

Resultatruden viser:

pgAdmin-resultatpanel for LIKE %by%-forespรธrgsel

_ Jokertegn i pgAdmin

Trin 1) Log ind pรฅ pgAdmin.

Trin 2) Klik pรฅ i navigationslinjen til venstre Databaser, og klik derefter pรฅ Demo.

pgAdmin navigationstrรฆ, der viser databasetrรฆet

Trin 3) Skriv forespรธrgslen i forespรธrgselseditoren:

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

Trin 4) Klik Udfรธr.

pgAdmin-forespรธrgselsvรฆrktรธj kรธrer LIKE _earn%-forespรธrgsel

Resultatruden viser:

pgAdmin-resultatpanel for LIKE _earn%-forespรธrgsel

Trin 5) Kรธr det andet eksempel:

  1. Skriv forespรธrgslen i forespรธrgselseditoren:
SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';
  1. Klik Udfรธr.

pgAdmin-forespรธrgselsvรฆrktรธj kรธrer LIKE %Beginner_-forespรธrgsel

Resultatruden viser:

pgAdmin-resultatpanel for LIKE %Beginner_-forespรธrgsel

IKKE SOM i pgAdmin

Trin 1) Log ind pรฅ pgAdmin.

Trin 2) Klik pรฅ i navigationslinjen til venstre Databaser, og klik derefter pรฅ Demo.

pgAdmin navigationstrรฆ for eksempel IKKE SYNES OM

Trin 3) For at liste alle bรธger, hvis navn ikke starter med "Post", skal du skrive:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

Trin 4) Klik Udfรธr.

pgAdmin-forespรธrgselsvรฆrktรธj kรธrer IKKE SOM Post%-forespรธrgsel

Resultatruden viser:

pgAdmin resultatrude for NOT LIKE Post% forespรธrgsel

Yderligere pgAdmin-resultatdetaljer for NOT LIKE-forespรธrgslen

Sรฅdan oplister du bรธger, hvis navn ikke indeholder ordet "Made":

Trin 1) Skriv fรธlgende i forespรธrgselseditoren:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

Trin 2) Klik Udfรธr.

pgAdmin-forespรธrgselsvรฆrktรธjet kรธrer IKKE SOM %Made%-forespรธrgsel

Resultatruden viser:

pgAdmin-resultatpanel for NOT LIKE %Made%-forespรธrgsel

Download databasen, der bruges i denne vejledning.

Ofte Stillede Spรธrgsmรฅl

LIKE skelner mellem store og smรฅ bogstaver, mens ILIKE udfรธrer matchning uden at skelne mellem store og smรฅ bogstaver. ILIKE er en PostgreSQL filtypenavn. For eksempel matcher navnet ILIKE 'lear%' bรฅde "Learn" og "LEAR". Brug ILIKE, nรฅr brugerens input er uforudsigelig.

Brug ESCAPE-klausulen til at deklarere et escape-tegn, og sรฆt derefter prรฆfikset for det litterale jokertegn. For eksempel finder WHERE-koden LIKE '50!%%' ESCAPE '!' vรฆrdier, der starter med "50%", fordi udrรฅbstegnet escaperer procenttegnet.

Brug LIKE til simple prรฆfiks-, suffiks- eller delstrengsmatch. Skift til POSIX regex (~ og ~*), nรฅr du har brug for tegnklasser, alternering eller kvantifikatorer. Regex er mere kraftfuld, men typisk langsommere end LIKE til basale mรธnstre.

Ja. AI Assistenter som f.eks. tekst-til-SQL-copiloter oversรฆtter prompter som "find kunder, hvis e-mail indeholder acme" til navne SOM '%acme%' og forklarer jokertegnlogikken, hvilket fremskynder ad hoc-rapportering.

Generativ AI inspicerer forespรธrgselsplanen, anbefaler et trigramindeks (pg_trgm) til LIKE-sรธgninger med indledende jokertegn og omskriver mรธnstre, der forhindrer brug af indekset. Dette omdanner fulde tabelscanninger til opslag i millisekund pรฅ store PostgreSQL tabeller.

Opsummer dette indlรฆg med: