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

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.

syntax

Ocuco PostgreSQL delstrengfunksjonen tar følgende syntaks:

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

Parametre

Navn Tekniske beskrivelser
string Kildestrengen hvis datatype er varchar, char, string, etc.
startposisjon Det er en valgfri parameter. Den angir stedet der eksentracsjonen av strengen vil begynne. Hvis du utelater denne parameteren, vil eks.tracsjonen vil starte fra posisjon 1, som er det første tegnet i strengen.
lengde Det er en valgfri parameter. Den angir antall tegn som skal brukes.tracted fra strengen. Hvis du utelater denne parameteren, vil funksjonentract 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 starter på posisjon 1. 4 tegn ble ekskluderttracted for å returnere det ovennevnte.

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 har startet eks.tracsjon på posisjon 5, og 2 tegn har blitt fjernettracted.

Tenk på boktabellen nedenfor:

PostgreSQL Understreng

Vi ønsker å få en omtrentlig idé om navnet på hver bok. Vi kan imidlertid 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 Understreng

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

Matche understrenger med SQL-regulært uttrykk

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

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Her er en forklaring av parametrene ovenfor:

Strengen er kildestrengen hvis data-type er varchar, røye, streng osv.

Matching_pattern er mønsteret som skal brukes for å 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 at alderen din er 22. I mønsteret søker vi etter et numerisk mønster i strengen vår. Når dette blir funnet, skal delstrengfunksjonen bare eks.tract to tegn.

Hvordan matche understrenger ved hjelp av pgAdmin

La oss nå se hvordan handlingene utføres ved hjelp av pgAdmin.

Spørringene ovenfor der vi ikke trenger en database kan utføres direkte fra spørringsredigeringsvinduet. Bare gjør følgende:

Trinn 1) Logg på kontoen din.
Logg på pgAdmin-kontoen din.

Trinn 2) På pgAdmin,
Klikk på spørreverktøyikonet.

Matchende understrenger ved hjelp av pgAdmin

Spørringsredigeringsvinduet åpnes.

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

SELECT substring('Guru99' for 4);

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

Matchende understrenger ved hjelp av pgAdmin

Trinn 5) Utførelse av spørring 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)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk 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 Understreng

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

Sammendrag

  • Ocuco PostgreSQL Delstrengfunksjonen hjelper i f.eks.tracting og returnerer bare en del av en streng.
  • Det første tegnet i strengen er på posisjon 1.
  • Hvis antallet tegn som skal være eks.tracHvis ikke strengen er spesifisert, vil funksjonen utføretract tegn fra den angitte startposisjonen til slutten av strengen.
  • Hvis antallet tegn som skal være eks.tracHvis ted er spesifisert, vil bare det antallet tegn bli ekskludert.tracted.

Last ned databasen som brukes i denne opplæringen

Oppsummer dette innlegget med: