PostgreSQL LIKE, Not Like, Jokertekens (%, _ ) Voorbeelden

โšก Slimme samenvatting

PostgreSQL LIKE vergelijkt tekst met patronen met behulp van twee jokertekens: het procentteken (%) en de underscore (_). Deze handleiding laat zien hoe je LIKE en NOT LIKE gebruikt in SELECT-statements, met uitgewerkte psql- en pgAdmin-voorbeelden voor beide gevallen.

  • ๐Ÿ” Kern Operavoor: LIKE vergelijkt een kolom of expressie met een jokertekenpatroon en retourneert true bij een overeenkomst.
  • ???? Twee jokers: % komt overeen met nul of meer tekens; _ komt precies overeen met รฉรฉn teken.
  • โœ‹ Omgekeerde overeenkomst: Combineer NOT met LIKE om rijen te retourneren die dat doen. niet Het patroon moet overeenkomen.
  • ๏ธ Twee interfaces: Voer dezelfde query's uit via de psql-opdrachtregel of grafisch in pgAdmin.
  • ๐ŸŽฏ Ontsnappingskarakter: Gebruik de ESCAPE-clausule om letterlijke %- of _-tekens binnen het patroon te matchen.
  • ๐Ÿค– AI-boost: AI-databasetools vertalen zoekopdrachten in gewone taal naar LIKE-patronen en suggereren ILIKE wanneer er geen rekening gehouden hoeft te worden met hoofdlettergevoeligheid.

PostgreSQL LIKE, Not Like, Jokertekens (%, _ ) Voorbeelden

De PostgreSQL LIKE De operator vergelijkt tekstwaarden met patronen met behulp van jokertekens. Als de zoekuitdrukking overeenkomt met het patroon, retourneert LIKE een waarde. trueJokertekens werken in de WHERE clausule van SELECT, UPDATE, INSERTof DELETE.

Wat zijn PostgreSQL Wildcards?

PostgreSQL ondersteunt twee LIKE-jokertekens:

  • Procentteken (%): Komt overeen met nul, รฉรฉn of meerdere tekens of cijfers.
  • Onderstreep (_): komt exact overeen met รฉรฉn teken of cijfer.

De twee symbolen kunnen binnen hetzelfde patroon worden gecombineerd. Als LIKE wordt gebruikt zonder een van de jokertekens, gedraagt โ€‹โ€‹het zich als het gelijkheidsteken ( ).=) exploitant.

PostgreSQL LIKE-syntaxis

De basissyntaxis van LIKE is:

expression LIKE pattern [ ESCAPE 'escape-character' ]
  • uitdrukking โ€” een tekenuitdrukking, meestal een kolom- of veldnaam.
  • patroon โ€” een tekenuitdrukking die jokers bevat.
  • ontsnappingskarakter โ€” optioneel. Hiermee kunt u letterlijke overeenkomsten vinden. % or _ tekens. Indien weggelaten, de backslash (\) is het standaard escape-teken.

PostgreSQL Zoals met het %-jokerteken

De % Het teken komt overeen met nul, รฉรฉn of meer tekens. Neem het volgende in overweging. Book tafel:

Tabel uit het voorbeeldboek die in de LIKE-voorbeelden wordt gebruikt

Om boeken te vinden waarvan de titel met 'Lear' begint, kunt u de onderstaande zoekopdracht uitvoeren.

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

De query retourneert:

LIKE Lear% zoekopdrachtresultaat dat overeenkomende boeken retourneert

Om boeken te vinden waarvan de titel ergens "door" bevat:

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

De query retourneert:

Zoekresultaat %by% met overeenkomende boeken

PostgreSQL Zoals met het jokerteken _

De _ Het teken komt overeen met exact รฉรฉn teken. De volgende zoekopdracht vindt namen waarvan het eerste teken een willekeurige letter is, gevolgd door "earn" en vervolgens een willekeurig achtervoegsel:

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

De query retourneert:

Zoekresultaat zoals _earn% met een voorvoegsel van รฉรฉn teken komt overeen met de zoekresultaten.

Nog een voorbeeld: zoek naar elke tekst die eindigt op "Beginner" plus รฉรฉn extra teken:

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

De query retourneert:

LIKE %Beginner_ queryresultaat dat overeenkomt met het afsluitende enkele teken

PostgreSQL NIET ZOALS Operator

Combineer LIKE met NOT om rijen te retourneren die dat doen. niet Volg het patroon. Geef bijvoorbeeld een lijst van alle boeken waarvan de titel niet met 'Post' begint:

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

De query retourneert:

NIET ZOALS het Post%-resultaat, exclusief boeken die met Post beginnen.

Slechts รฉรฉn boek voldoet aan de voorwaarde. Noem nu alle boeken waarvan de naam dat wel doet. niet bevatten het woord "Made":

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

De query retourneert:

NIET ZOALS %Made% resultaat dat drie overeenkomende boeken retourneert

Drie rijen voldoen aan de voorwaarde.

LIKE gebruiken met pgAdmin

Dezelfde query's kunnen ook grafisch worden uitgevoerd in de querytool van pgAdmin.

% Jokerteken in pgAdmin

Stap 1) Log in bij pgAdmin.

Stap 2) Klik in de navigatiebalk aan de linkerkant op databases, dan klikken .

pgAdmin-navigatiestructuur met uitgevouwen Databases en Demo

Stap 3) Voer de zoekopdracht in de zoekopdrachteditor in:

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

Stap 4) Klik Uitvoeren.

pgAdmin Query Tool met de knop 'Uitvoeren' in de werkbalk.

In het resultatenvenster worden de overeenkomende boeken weergegeven:

pgAdmin-resultatenvenster voor LIKE Lear%-query

Om te zoeken naar een boek waarvan de titel ergens "van" bevat:

Stap 1) Typ het volgende in de query-editor:

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

Stap 2) Klik Uitvoeren.

pgAdmin Query Tool voert een LIKE %by% query uit

Het resultaatvenster toont:

pgAdmin-resultatenvenster voor LIKE %by%-query

_ Jokerteken in pgAdmin

Stap 1) Log in bij pgAdmin.

Stap 2) Klik in de navigatiebalk aan de linkerkant op databases, dan klikken .

De navigatiestructuur van pgAdmin toont de databasestructuur.

Stap 3) Voer de zoekopdracht in de zoekopdrachteditor in:

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

Stap 4) Klik Uitvoeren.

pgAdmin Query Tool voert een LIKE _earn% query uit

Het resultaatvenster toont:

pgAdmin-resultatenvenster voor de LIKE _earn%-query

Stap 5) Voer het tweede voorbeeld uit:

  1. Voer de zoekopdracht in de zoekopdrachteditor in:
SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';
  1. Klik Uitvoeren.

pgAdmin Query Tool draait als %Beginner_ query

Het resultaatvenster toont:

pgAdmin-resultatenvenster voor LIKE %Beginner_ query

NIET ZOALS in pgAdmin

Stap 1) Log in bij pgAdmin.

Stap 2) Klik in de navigatiebalk aan de linkerkant op databases, dan klikken .

pgAdmin-navigatiestructuur voor het voorbeeld 'NIET ZOALS'

Stap 3) Om alle boeken weer te geven waarvan de titel niet met 'Post' begint, typt u:

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

Stap 4) Klik Uitvoeren.

pgAdmin Query Tool werkt NIET ZOALS Post% query

Het resultaatvenster toont:

pgAdmin-resultatenvenster voor NOT LIKE Post%-query

Aanvullende details over het pgAdmin-resultaat voor de NOT LIKE-query

Om boeken te vermelden waarvan de titel het woord 'Made' niet bevat:

Stap 1) Typ het volgende in de query-editor:

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

Stap 2) Klik Uitvoeren.

pgAdmin Query Tool werkt NIET ZOALS %Made% query

Het resultaatvenster toont:

pgAdmin-resultatenvenster voor de zoekopdracht NOT LIKE %Made%

Download de database die in deze handleiding wordt gebruikt..

Veelgestelde vragen

LIKE is hoofdlettergevoelig, terwijl ILIKE hoofdletterongevoelige overeenkomsten zoekt. ILIKE is een PostgreSQL uitbreiding. Bijvoorbeeld, de naam ILIKE 'lear%' komt overeen met zowel "Learn" als "LEAR". Gebruik ILIKE wanneer de hoofdlettergevoeligheid van de gebruikersinvoer onvoorspelbaar is.

Gebruik de ESCAPE-clausule om een โ€‹โ€‹escape-teken te declareren en plaats vervolgens het letterlijke jokerteken ervoor. Bijvoorbeeld: WHERE code LIKE '50!%%' ESCAPE '!' vindt waarden die beginnen met "50%" omdat het uitroepteken het procentteken ontsnapt.

Gebruik LIKE voor eenvoudige overeenkomsten met voorvoegsels, achtervoegsels of deeltekenreeksen. Schakel over naar POSIX-regex (~ en ~*) wanneer u tekenklassen, alternatie of kwantificatoren nodig hebt. Regex is krachtiger, maar doorgaans trager dan LIKE voor basispatronen.

Ja. AI Assistenten zoals tekst-naar-SQL-copiloten vertalen prompts zoals "zoek klanten waarvan het e-mailadres 'acme' bevat" naar naam LIKE '%acme%' en leggen de logica achter de wildcard uit, waardoor ad-hoc rapportage wordt versneld.

Generatieve AI analyseert het queryplan, adviseert een trigram-index (pg_trgm) voor LIKE-zoekopdrachten met een wildcard aan het begin, en herschrijft patronen die het gebruik van de index belemmeren. Hierdoor worden volledige tabelscans in milliseconden uitgevoerd, zelfs bij grote tabellen. PostgreSQL tabellen.

Vat dit bericht samen met: