PostgreSQL SUBSTRING()-funksjon med eksempel på regulært uttrykk

⚡ Smart oppsummering

PostgreSQL DELSTRING f.eks.tracts og returnerer en del av en streng, ved hjelp av en valgfri startposisjon og lengde, og den matcher også tekst mot et POSIX-regulært uttrykk for å trekke ut mønstre som tall eller koder.

  • ???? Syntaks: substring( streng [fra start] [for lengde] ) returnerer en del av kildestrengen.
  • 1️⃣ posisjoner: Tegnposisjoner begynner på 1, og hvis lengden utelates, leses den til strengens slutt.
  • 🔎 Regex: DELSTRING(streng FRA mønster) f.eks.tracts den første teksten som samsvarer med et POSIX-regulært uttrykk.
  • 🧮 Grouping: En gruppe i parentes i mønsteret returnerer bare den delen av kampen som ble fanget opp.
  • 🖥️ pgAdmin: Alle delstrengspørringer kjøres på samme måte i pgAdmin-spørreredigeringsprogrammet.
  • 🤖 AI-hjelp: AI-assistenter genererer og forklarer regex-mønstre for nøyaktige delstrengeksemplertracsjon.

PostgreSQL SUBSTRING-funksjon med regex

Hva er PostgreSQL Understreng?

Ocuco PostgreSQL delstrengfunksjonen hjelper deg med å f.eks.tract og returnerer en del av en streng. I stedet for å returnere hele strengen, returneres bare en del av den, noe som er nyttig for å trimme kode og lese felt med fast bredde.

syntax

Ocuco PostgreSQL delstrengfunksjonen tar følgende syntaks:

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

Parametre

Følgende parametere brukes med delstrengfunksjonen:

string Kildestrengen hvis datatype er varchar, char, string, etc.
startposisjon En valgfri parameter. Den angir stedet der eksentracsjonen av strengen vil begynne. Hvis du utelater denne parameteren, vil eks.tracSionen starter fra posisjon 1, som er det første tegnet i strengen.
lengde En valgfri parameter. Den angir antall tegn som skal ekskluderes.tracted fra strengen. Hvis du utelater denne parameteren, vil funksjonen f.eks.tracts fra startposisjon til slutten av strengen.

Eksempler

I dette eksemplet ønsker vi å f.eks.tracde første 4 tegnene i ordet Guru99:

SELECT substring('Guru99' for 4);

Kommandoen vil returnere følgende:

PostgreSQL Understreng

Vi spesifiserte ikke startposisjonen, så eksentracsjon av delstrengen startet på posisjon 1. Fire tegn ble ekskluderttracted for å returnere resultatet ovenfor.

Følgende eksempel viser hvordan du angir startposisjonen:

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

Kommandoen vil returnere følgende:

PostgreSQL Understreng

Vi spesifiserte at eksentracDelstrengen skal begynne fra posisjon 1, og 4 tegn skal være utløpt.tracted.

La oss ekstract 99 fra strengen Guru99:

SELECT substring('Guru99' from 5);

Kommandoen vil returnere følgende:

PostgreSQL Understreng

Vi spesifiserte startposisjonen som 5. Siden antallet tegn som skal være eks.tracted ble ikke spesifisert, eksentracsjonen løp til slutten av strengen.

Her er et annet eksempel:

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

Kommandoen vil returnere følgende:

PostgreSQL Understreng

Vi startet ekstracsjon på posisjon 5, og 2 tegn ble eks.tracted.

Tenk på boktabellen nedenfor:

PostgreSQL Delstrengboktabell

Vi ønsker å få en omtrentlig idé om navnet på hver bok. Vi kan f.eks.tracbare de første 15 tegnene fra navnekolonnen i tabellen:

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

Kommandoen vil returnere følgende:

PostgreSQL Delstrengresultat

Vi har nå en grov idé om navnet på hver bok.

Matche understrenger med SQL-regulært uttrykk

In PostgreSQL, du kan eks.tracen delstreng som samsvarer med et spesifisert POSIX-regulært uttrykk. I dette tilfellet bruker delstrengfunksjonen følgende syntaks:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Her er en forklaring av parameterne ovenfor. Strengen er kildestrengen, hvis data-type er varchar, char, streng og så videre. matching_pattern er mønsteret som brukes til å søke i strengen.

Eksempler

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

Kommandoen vil returnere følgende:

Matche understrenger med SQL-regulært uttrykk

Inndatastrengen vår er Din alder er 22. I mønsteret søker vi etter et numerisk mønster; når det blir funnet, bruker delstrengfunksjonen f.eks.tracbare to tegn.

Slik matcher du delstrenger ved hjelp av pgAdmin

La oss nå se hvordan disse handlingene utføres med pgAdmin. Spørringer som ikke trenger en database kan kjøres direkte fra spørreredigeringsvinduet. Bare gjør følgende:

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2) Klikk på ikonet for spørreverktøyet på pgAdmin.

Matchende understrenger ved hjelp av pgAdmin

Spørringsredigeringsvinduet åpnes.

Trinn 3) Skriv inn følgende spørring i redigeringsvinduet.

SELECT substring('Guru99' for 4);

Trinn 4) Klikk på Utfør-ikonet for å utføre spørringen.

Matchende understrenger ved hjelp av pgAdmin

Trinn 5) Spørringen er utført. Den skal returnere følgende:

Matchende understrenger ved hjelp av pgAdmin

Eksempel 2:

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

Den skal returnere følgende:

Matchende understrenger ved hjelp av pgAdmin

Her er neste eksempel:

SELECT substring('Guru99' from 5);

Den skal returnere følgende:

Matchende understrenger ved hjelp av pgAdmin

Eksempel 3:

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

Den skal returnere følgende:

Matchende understrenger ved hjelp av pgAdmin

La oss nå kjøre eksemplet ved å bruke boktabellen i Demo-databasen:

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2) Fra navigasjonslinjen til venstre klikker du på Databaser, og deretter på Demo.

Matchende understrenger ved hjelp av pgAdmin

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

Matchende understrenger ved hjelp av pgAdmin

Den skal returnere følgende:

PostgreSQL Delstrengresultat

Vi har nå en grunnleggende idé om navnet på hver bok.

Matche understrenger med SQL-regulært uttrykk

For å oppnå det samme på pgAdmin, gjør følgende:

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2) Klikk på spørreverktøyikonet.

Matche understrenger med SQL-regulært uttrykk

Spørringsredigeringsvinduet åpnes.

Trinn 3) Skriv inn følgende spørring i redigeringsvinduet.

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

Trinn 4) Klikk på Utfør-ikonet for å utføre spørringen.

Matche understrenger med SQL-regulært uttrykk

Den skal returnere følgende:

Matche understrenger med SQL-regulært uttrykk

Last ned databasen som brukes i denne opplæringen

Spørsmål og svar

SUBSTR er et kortere alias av SUBSTRING og returnerer en del av en streng. SUBSTRING støtter også SQL-standardnøkkelordene FROM og FOR pluss POSIX-regulære uttrykk, mens SUBSTR bare godtar kommaseparerte posisjons- og lengdeargumenter.

PostgreSQL SUBSTRING er én-basert, så det første tegnet er på posisjon 1, ikke 0. Hvis startposisjonen er 1, returneres strengen fra det første tegnet og utover.

Når POSIX-mønsteret ikke samsvarer med noe, returnerer SUBSTRING NULL i stedet for en tom streng. Ved å teste resultatet med IS NULL kan du håndtere rader der det forventede mønsteret mangler.

Bruk et regulært uttrykk som fanger opp det som følger etter tegnet. For eksempel returnerer SUBSTRING(email FROM '@(.*)') alt etter @-tegnet, noe som gir deg domenedelen av hver e-postadresse.

Bruk SUBSTRING når du trenger den første samsvarende teksten som en enkel verdi. Velg regexp_matches() når du vil at hvert samsvar eller flere capture-grupper skal returneres som en array, siden SUBSTRING bare returnerer det første samsvaret.

AI-assistenter som GitHub Copilot gjør om en beskrivelse på vanlig engelsk til et POSIX-mønster, forklarer hva hvert token samsvarer med og foreslår teststrenger, noe som reduserer prøving og feiling når man bygger delstrenger.tracsjonsspørsmål.

Ja. Beskriv den delen av teksten du ønsker, så lager AI-assistenten et utkast til et SUBSTRING-kall med de riktige posisjonene eller det regulære uttrykket, som du kan kjøre og finjustere i pgAdmin.

Ja, POSIX SUBSTRING-samsvar er som standard store og små bokstaver sensitivt. For å matche uavhengig av store og små bokstaver, bruk en nedre tast i begge inngangene, for eksempel SUBSTRING(lower(navn) FROM lower(mønster)), slik at store og små bokstaver behandles likt.

Oppsummer dette innlegget med: