PostgreSQL SUBSTRING() Funktion med regulært udtryk eksempel

⚡ Smart opsummering

PostgreSQL DELSTRING f.eks.tracts og returnerer en del af en streng ved hjælp af en valgfri startposition og længde, og den matcher også tekst mod et regulært POSIX-udtryk for at udtrække mønstre såsom tal eller koder.

  • ???? Syntaks: substring( string [fra start] [for længde] ) returnerer en del af kildestrengen.
  • 1️⃣ Positioner: Tegnpositioner starter ved 1, og hvis længden udelades, læses der til strengens slutning.
  • 🔎 Regex: DELSTRING(streng FRA mønster) f.eks.tracts den første tekst, der matcher et regulært POSIX-udtryk.
  • 🧮 Grouping: En gruppe i parenteser i mønsteret returnerer kun den del af kampen, der blev fanget.
  • 🖥️ pgAdmin: Alle understrengsforespørgsler kører på samme måde i pgAdmin-forespørgselseditoren.
  • 🤖 AI-hjælp: AI-assistenter genererer og forklarer regex-mønstre for at opnå præcise delstrengseks.traction.

PostgreSQL SUBSTRING-funktion med regex

Hvad er PostgreSQL Understreng?

PostgreSQL delstrengsfunktionen hjælper dig med at f.eks.tract og returnerer en del af en streng. I stedet for at returnere hele strengen, returneres kun en del af den, hvilket er nyttigt til at trimme kode og læse felter med fast bredde.

Syntaks

PostgreSQL substring funktion tager følgende syntaks:

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

Driftsparametre

Følgende parametre bruges med delstrengsfunktionen:

streng Kildestrengen, hvis datatype er varchar, char, string osv.
startposition En valgfri parameter. Den angiver det sted, hvor eks.tracStrengens tion vil begynde. Hvis du udelader denne parameter, vil eks.tracTion starter fra position 1, som er det første tegn i strengen.
længde En valgfri parameter. Den angiver antallet af tegn, der skal udskrives.tracted fra strengen. Hvis du udelader denne parameter, vil funktionen f.eks.tracts fra startposition til slutningen af ​​strengen.

Eksempler

I dette eksempel ønsker vi at f.eks.tracde første 4 tegn fra ordet Guru99:

SELECT substring('Guru99' for 4);

Kommandoen returnerer følgende:

PostgreSQL substring

Vi specificerede ikke startpositionen, så eks.traction af delstrengen startet på position 1. Fire tegn blev fjernettracted for at returnere ovenstående resultat.

Følgende eksempel viser, hvordan du angiver startpositionen:

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

Kommandoen returnerer følgende:

PostgreSQL substring

Vi specificerede, at den tidligeretracDelstrengens sætning skal starte fra position 1, og 4 tegn skal være udløbet.tracted.

Lad os eks.tract 99 fra strengen Guru99:

SELECT substring('Guru99' from 5);

Kommandoen returnerer følgende:

PostgreSQL substring

Vi angav startpositionen som 5. Da antallet af tegn, der skal være f.eks.tracted blev ikke specificeret, eks.traction løb til enden af ​​strengen.

Her er et andet eksempel:

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

Kommandoen returnerer følgende:

PostgreSQL substring

Vi startede eks.traction på position 5, og 2 tegn blev eks.tracted.

Overvej bogtabellen nedenfor:

PostgreSQL Delstrengbogstabel

Vi vil gerne have en nogenlunde idé om navnet på hver bog. Vi kan f.eks.trackun de første 15 tegn fra navnekolonnen i tabellen:

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

Kommandoen returnerer følgende:

PostgreSQL Delstrengsresultat

Vi har nu en grov idé om navnet på hver bog.

Matchende understrenge med SQL-regulært udtryk

In PostgreSQL, du kan f.eks.tracen delstreng, der matcher et angivet POSIX-regulært udtryk. I dette tilfælde bruger delstrengfunktionen følgende syntaks:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Her er en forklaring af ovenstående parametre. Strengen er kildestrengen, hvis datatype er varchar, char, string osv. matching_pattern er det mønster, der bruges til at søge i strengen.

Eksempler

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

Kommandoen returnerer følgende:

Matchende understrenge med SQL-regulært udtryk

Vores inputstreng er Din alder er 22. I mønsteret søger vi efter et numerisk mønster; når det findes, bruges delstrengsfunktionen f.eks.trackun to tegn.

Sådan matcher du delstrenge ved hjælp af pgAdmin

Lad os nu se, hvordan disse handlinger udføres ved hjælp af pgAdmin. Forespørgsler, der ikke kræver en database, kan udføres direkte fra forespørgselseditorvinduet. Gør blot følgende:

Trin 1) Log ind på din pgAdmin-konto.

Trin 2) Klik på ikonet Forespørgselsværktøj i pgAdmin.

Matchende understrenge ved hjælp af pgAdmin

Forespørgselsredigeringsvinduet åbnes.

Trin 3) Skriv følgende forespørgsel i editorvinduet.

SELECT substring('Guru99' for 4);

Trin 4) Klik på ikonet Udfør for at udføre forespørgslen.

Matchende understrenge ved hjælp af pgAdmin

Trin 5) Forespørgslen er udført. Den skal returnere følgende:

Matchende understrenge ved hjælp af pgAdmin

Eksempel 2:

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

Det skal returnere følgende:

Matchende understrenge ved hjælp af pgAdmin

Her er det næste eksempel:

SELECT substring('Guru99' from 5);

Det skal returnere følgende:

Matchende understrenge ved hjælp af pgAdmin

Eksempel 3:

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

Det skal returnere følgende:

Matchende understrenge ved hjælp af pgAdmin

Lad os nu køre eksemplet ved hjælp af bogtabellen i Demo-databasen:

Trin 1) Log ind på din pgAdmin-konto.

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

Matchende understrenge ved hjælp af pgAdmin

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

Matchende understrenge ved hjælp af pgAdmin

Det skal returnere følgende:

PostgreSQL Delstrengsresultat

Vi har nu en grundlæggende idé om navnet på hver bog.

Matchende understrenge med SQL-regulært udtryk

For at opnå det samme på pgAdmin skal du gøre følgende:

Trin 1) Log ind på din pgAdmin-konto.

Trin 2) Klik på ikonet Forespørgselsværktøj.

Matchende understrenge med SQL-regulært udtryk

Forespørgselsredigeringsvinduet åbnes.

Trin 3) Skriv følgende forespørgsel i editorvinduet.

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

Trin 4) Klik på ikonet Udfør for at udføre forespørgslen.

Matchende understrenge med SQL-regulært udtryk

Det skal returnere følgende:

Matchende understrenge med SQL-regulært udtryk

Download databasen brugt i denne vejledning

Ofte Stillede Spørgsmål

SUBSTR er et kortere alias for SUBSTRING og returnerer en del af en streng. SUBSTR understøtter også SQL-standardnøgleordene FROM og FOR plus regulære POSIX-udtryk, mens SUBSTR kun accepterer kommaseparerede positions- og længdeargumenter.

PostgreSQL SUBSTRING er én-baseret, så det første tegn sidder på position 1, ikke 0. Hvis startpositionen 1 angives, returneres strengen fra dens første tegn og fremefter.

Når POSIX-mønsteret ikke matcher noget, returnerer SUBSTRING NULL i stedet for en tom streng. Test af resultatet med IS NULL giver dig mulighed for at håndtere rækker, hvor det forventede mønster mangler.

Brug et regulært udtryk, der registrerer det, der følger efter tegnet. For eksempel returnerer SUBSTRING(email FROM '@(.*)') alt efter @-tegnet, hvilket giver dig domænedelen af ​​hver e-mailadresse.

Brug SUBSTRING, når du har brug for den første matchende tekst som en simpel værdi. Vælg regexp_matches(), når du vil have hvert match eller flere capture-grupper returneret som et array, da SUBSTRING kun returnerer det første match.

AI-assistenter som GitHub Copilot omdanner en beskrivelse på almindeligt engelsk til et POSIX-mønster, forklarer, hvad hvert token matcher, og foreslår teststrenge, hvilket reducerer forsøg og fejl, når man bygger delstrenge.tracforespørgsler.

Ja. Beskriv den ønskede del af teksten, og AI-assistenten udarbejder et SUBSTRING-kald med de korrekte positioner eller regulære udtryk, som du kan køre og forfine inde i pgAdmin.

Ja, POSIX SUBSTRING-matchning skelner som standard mellem store og små bogstaver. For at matche uanset store og små bogstaver, skal du lave begge input, for eksempel SUBSTRING(lower(navn) FROM lower(mønster)), så store og små bogstaver behandles ens.

Opsummer dette indlæg med: