PostgreSQL SUBSTRING() Functie met Regex-voorbeeld

โšก Slimme samenvatting

PostgreSQL SUBSTRING extracDe functie retourneert een deel van een tekenreeks, waarbij een optionele startpositie en lengte worden gebruikt. Daarnaast vergelijkt de functie tekst met een POSIX-reguliere expressie om patronen zoals getallen of codes te extraheren.

  • ๐Ÿ“‹ Syntax: substring( string [vanaf begin] [voor lengte] ) retourneert een gedeelte van de bronstring.
  • 1๏ธโƒฃ posities: Tekenposities beginnen bij 1, en als de lengte wordt weggelaten, wordt tot het einde van de tekenreeks gelezen.
  • ๐Ÿ”Ž Reguliere expressie: SUBSTRING(string FROM pattern) extracts is de eerste tekst die overeenkomt met een POSIX-reguliere expressie.
  • ๐Ÿงฎ Grouping: Een groep tussen haakjes in het patroon retourneert alleen dat vastgelegde deel van de overeenkomst.
  • โ€‹ pgAdmin: Elke substring-query wordt op dezelfde manier uitgevoerd in de pgAdmin-query-editor.
  • ๐Ÿค– AI-hulp: AI-assistenten genereren en verklaren reguliere expressiepatronen voor nauwkeurige substring-extractie.tractie.

PostgreSQL SUBSTRING-functie met reguliere expressies

Wat is PostgreSQL Subtekenreeks?

De PostgreSQL De substring-functie helpt je bij het uitvoeren vantracDe functie retourneert een deel van een tekenreeks. In plaats van de hele tekenreeks terug te geven, retourneert deze slechts een deel ervan, wat handig is voor het inkorten van codes en het lezen van velden met een vaste breedte.

Syntaxis

De PostgreSQL De substringfunctie heeft de volgende syntaxis:

substring( string [from starting_position] [for length] )

Kenmerken

De volgende parameters worden gebruikt met de substring-functie:

snaar De bronreeks waarvan het gegevenstype varchar, char, string, etc. is.
start positie Een optionele parameter. Deze geeft de plaats aan waar de extracDe bewerking van de tekenreeks zal beginnen. Als u deze parameter weglaat, zal de bewerkingtracDe bewerking begint bij positie 1, oftewel het eerste teken in de tekenreeks.
lengte Een optionele parameter. Deze geeft het aantal tekens aan dat moet worden weergegeven.tracted uit de tekenreeks. Als u deze parameter weglaat, zal de functie extracts vanaf de startpositie tot het einde van de string.

Voorbeelden

In dit voorbeeld willen we ...tracde eerste 4 tekens van het woord Guru99:

SELECT substring('Guru99' for 4);

De opdracht retourneert het volgende:

PostgreSQL Subtekenreeks

We hebben de startpositie niet gespecificeerd, dus de extracDe substring begon op positie 1. Vier tekens werden geรซxtracted om het bovenstaande resultaat terug te geven.

Het volgende voorbeeld laat zien hoe u de startpositie kunt opgeven:

SELECT substring('Guru99' from 1 for 4);

De opdracht retourneert het volgende:

PostgreSQL Subtekenreeks

We hebben gespecificeerd dat de extracDe substring moet beginnen op positie 1 en moet uit 4 tekens bestaan.tracted.

Laten we eenstract 99 uit de string Guru99:

SELECT substring('Guru99' from 5);

De opdracht retourneert het volgende:

PostgreSQL Subtekenreeks

We hebben de startpositie ingesteld op 5. Aangezien het aantal tekens dat geรซxtracTed werd niet gespecificeerd, de extracDe tie liep tot het einde van de string.

Hier is nog een voorbeeld:

SELECT substring('Guru99' from 5 for 2);

De opdracht retourneert het volgende:

PostgreSQL Subtekenreeks

We begonnen extractie op positie 5, en 2 tekens werden geรซxtracted.

Beschouw de onderstaande boekentabel:

PostgreSQL Tabel met deeltekenreeksen in het boek

We willen een globaal idee krijgen van de titel van elk boek. We kunnen bijvoorbeeld...tracalleen de eerste 15 tekens uit de kolom 'naam' van de tabel:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

De opdracht retourneert het volgende:

PostgreSQL Substringresultaat

We hebben nu een globaal idee over de naam van elk boek.

Matchen van subtekenreeksen met reguliere SQL-expressie

In PostgreSQL, je kunt extracEen substring die overeenkomt met een opgegeven POSIX-reguliere expressie. In dit geval gebruikt de substring-functie de volgende syntaxis:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Hieronder volgt een uitleg van de bovenstaande parameters. De string is de bronstring, waarvan... data type Het type is varchar, char, string, enzovoort. Het matching_pattern is het patroon dat wordt gebruikt om in de string te zoeken.

Voorbeelden

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

De opdracht retourneert het volgende:

Matchen van subtekenreeksen met reguliere SQL-expressie

Onze invoerstring is "Your age is 22". In het patroon zoeken we naar een numeriek patroon; wanneer dit gevonden wordt, voert de substring-functie een extra tekenreeks uit.tracHet zijn maar twee tekens.

Hoe je subtekenreeksen kunt matchen met pgAdmin

Laten we nu eens kijken hoe deze acties worden uitgevoerd met pgAdmin. De query's die geen database nodig hebben, kunnen rechtstreeks vanuit het query-editorvenster worden uitgevoerd. Doe hiervoor het volgende:

Stap 1) Log in op uw pgAdmin-account.

Stap 2) Klik in pgAdmin op het pictogram van de querytool.

Overeenkomende substrings met behulp van pgAdmin

Het query-editorvenster wordt geopend.

Stap 3) Voer de volgende zoekopdracht in het editorvenster in.

SELECT substring('Guru99' for 4);

Stap 4) Klik op het pictogram Uitvoeren om de query uit te voeren.

Overeenkomende substrings met behulp van pgAdmin

Stap 5) De query is voltooid. Het resultaat zou het volgende moeten zijn:

Overeenkomende substrings met behulp van pgAdmin

Voorbeeld 2:

SELECT substring('Guru99' from 1 for 4);

Het volgende zou moeten worden geretourneerd:

Overeenkomende substrings met behulp van pgAdmin

Hier is het volgende voorbeeld:

SELECT substring('Guru99' from 5);

Het volgende zou moeten worden geretourneerd:

Overeenkomende substrings met behulp van pgAdmin

Voorbeeld 3:

SELECT substring('Guru99' from 5 for 2);

Het volgende zou moeten worden geretourneerd:

Overeenkomende substrings met behulp van pgAdmin

Laten we nu het voorbeeld uitvoeren met behulp van de Boekentabel van de Demo-database:

Stap 1) Log in op uw pgAdmin-account.

Stap 2) Klik in de navigatiebalk aan de linkerkant op Databases en vervolgens op Demo.

Overeenkomende substrings met behulp van pgAdmin

Stap 3) Typ de query in de query-editor:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

Stap 4) Klik op de knop Uitvoeren.

Overeenkomende substrings met behulp van pgAdmin

Het volgende zou moeten worden geretourneerd:

PostgreSQL Substringresultaat

We hebben nu een basisidee van de naam van elk boek.

Matchen van subtekenreeksen met reguliere SQL-expressie

Om hetzelfde te bereiken op pgAdmin, doet u het volgende:

Stap 1) Log in op uw pgAdmin-account.

Stap 2) Klik op het pictogram Querytool.

Matchen van subtekenreeksen met reguliere SQL-expressie

Het query-editorvenster wordt geopend.

Stap 3) Voer de volgende zoekopdracht in het editorvenster in.

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

Stap 4) Klik op het pictogram Uitvoeren om de query uit te voeren.

Matchen van subtekenreeksen met reguliere SQL-expressie

Het volgende zou moeten worden geretourneerd:

Matchen van subtekenreeksen met reguliere SQL-expressie

Download de database die in deze zelfstudie wordt gebruikt

Veelgestelde vragen

SUBSTR is een kortere alias van SUBSTRING en retourneert een deel van een tekenreeks. SUBSTRING ondersteunt ook de SQL-standaard trefwoorden FROM en FOR, evenals POSIX-reguliere expressies, terwijl SUBSTR alleen door komma's gescheiden argumenten voor positie en lengte accepteert.

PostgreSQL SUBSTRING is gebaseerd op รฉรฉn, dus het eerste teken staat op positie 1, niet 0. Als je een startpositie van 1 doorgeeft, krijg je de tekenreeks vanaf het eerste teken terug.

Als het POSIX-patroon geen overeenkomst vindt, retourneert SUBSTRING NULL in plaats van een lege tekenreeks. Door het resultaat te testen met IS NULL kunt u rijen verwerken waar het verwachte patroon ontbreekt.

Gebruik een reguliere expressie die vastlegt wat er na het teken komt. Bijvoorbeeld, SUBSTRING(email FROM '@(.*)') geeft alles na het @-teken terug, waardoor je het domeinonderdeel van elk e-mailadres krijgt.

Gebruik SUBSTRING wanneer u de eerste overeenkomende tekst als een eenvoudige waarde nodig hebt. Kies regexp_matches() wanneer u elke overeenkomst of meerdere vastgelegde groepen als een array wilt retourneren, aangezien SUBSTRING alleen de eerste overeenkomst retourneert.

AI-assistenten zoals GitHub Copilot zetten een beschrijving in gewoon Engels om in een POSIX-patroon, leggen uit waar elk token mee overeenkomt en suggereren testreeksen, waardoor het proces van vallen en opstaan โ€‹โ€‹bij het bouwen van subreeksen wordt vereenvoudigd.tracvragen over tie.

Ja. Beschrijf het gedeelte van de tekst dat u wilt, en de AI-assistent stelt een SUBSTRING-aanroep op met de juiste posities of reguliere expressie, die u vervolgens in pgAdmin kunt uitvoeren en verfijnen.

Ja, POSIX SUBSTRING-matching is standaard hoofdlettergevoelig. Om ongeacht het hoofdlettergebruik te matchen, moet je beide invoerwaarden naar kleine letters converteren, bijvoorbeeld SUBSTRING(lower(name) FROM lower(pattern)), zodat hoofdletters en kleine letters gelijk worden behandeld.

Vat dit bericht samen met: