PostgreSQL SUBSTRING() Funktion med Regex Exempel

⚡ Smart sammanfattning

PostgreSQL DELSTRÄNG extracts och returnerar en del av en sträng, med en valfri startposition och längd, och den matchar även text mot ett reguljärt POSIX-uttryck för att hämta mönster som siffror eller koder.

  • 📋 Syntax: substring( sträng [från start] [för längd] ) returnerar en del av källsträngen.
  • 1️⃣ Poster: Teckenpositioner börjar vid 1, och om längden utelämnas läses värdet till strängens slut.
  • 🔎 Regex: DELSTRÄNG(sträng FRÅN mönster) t.ex.tracts den första texten som matchar ett reguljärt POSIX-uttryck.
  • 🧮 Grouping: En grupp inom parentes i mönstret returnerar endast den fångade delen av matchningen.
  • 🖥️ pgAdmin: Varje delsträngsfråga körs på samma sätt i pgAdmin-frågeredigeraren.
  • 🤖 AI-hjälp: AI-assistenter genererar och förklarar regex-mönster för korrekta delsträngsextraction.

PostgreSQL SUBSTRING-funktion med regex

Vad är PostgreSQL Delsträng?

Ocuco-landskapet PostgreSQL delsträngfunktionen hjälper dig att t.ex.tract och returnerar en del av en sträng. Istället för att returnera hela strängen returnerar den bara en del av den, vilket är användbart för att trimma kod och läsa fält med fast bredd.

syntax

Ocuco-landskapet PostgreSQL delsträngsfunktion tar följande syntax:

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

Driftparametrar

Följande parametrar används med delsträngfunktionen:

sträng Källsträngen vars datatyp är varchar, char, string, etc.
start position En valfri parameter. Den anger platsen där extractionen av strängen kommer att börja. Om du utelämnar den här parametern, extractionen börjar från position 1, vilket är det första tecknet i strängen.
längd En valfri parameter. Den anger antalet tecken som ska exkluderas.tracfrån strängen. Om du utelämnar den här parametern, funktionen extracts från startposition till slutet av strängen.

Exempel

I det här exemplet vill vi t.ex.tracde första fyra tecknen i ordet Guru99:

SELECT substring('Guru99' for 4);

Kommandot returnerar följande:

PostgreSQL Substräng

Vi specificerade inte startpositionen, så extraction av delsträngen som började vid position 1. Fyra tecken exkluderadestracted för att returnera resultatet ovan.

Följande exempel visar hur du anger startpositionen:

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

Kommandot returnerar följande:

PostgreSQL Substräng

Vi specificerade att extracDelsträngens position ska börja från position 1, och 4 tecken ska vara ex.tracted.

Låt oss extract 99 från strängen Guru99:

SELECT substring('Guru99' from 5);

Kommandot returnerar följande:

PostgreSQL Substräng

Vi angav startpositionen som 5. Eftersom antalet tecken som ska vara ex.tracted specificerades inte, extractionen sprang till slutet av strängen.

Här är ett annat exempel:

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

Kommandot returnerar följande:

PostgreSQL Substräng

Vi började extraction på position 5, och 2 tecken exkluderadestracted.

Tänk på boktabellen nedan:

PostgreSQL Delsträng Boktabell

Vi vill få en ungefärlig uppfattning om namnet på varje bok. Vi kan t.ex.tracendast de första 15 tecknen från namnkolumnen i tabellen:

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

Kommandot returnerar följande:

PostgreSQL Delsträngsresultat

Vi har nu en ungefärlig uppfattning om namnet på varje bok.

Matcha delsträngar med SQL Regular Expression

In PostgreSQL, du kan extracen delsträng som matchar ett angivet reguljärt POSIX-uttryck. I det här fallet använder delsträngfunktionen följande syntax:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

Här är en förklaring av ovanstående parametrar. Strängen är källsträngen, vars data typ är varchar, char, sträng och så vidare. matching_pattern är mönstret som används för att söka i strängen.

Exempel

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

Kommandot returnerar följande:

Matcha delsträngar med SQL Regular Expression

Vår inmatningssträng är Din ålder är 22. I mönstret söker vi efter ett numeriskt mönster; när det hittas, används delsträngsfunktionen extracbara två tecken.

Hur man matchar delsträngar med hjälp av pgAdmin

Nu ska vi se hur dessa åtgärder utförs med pgAdmin. Frågor som inte behöver en databas kan köras direkt från frågeredigerarfönstret. Gör bara följande:

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2) Klicka på ikonen för frågeverktyget på pgAdmin.

Matchande delsträngar med pgAdmin

Frågeredigeringsfönstret öppnas.

Steg 3) Skriv följande fråga i redigeringsfönstret.

SELECT substring('Guru99' for 4);

Steg 4) Klicka på ikonen Kör för att köra frågan.

Matchande delsträngar med pgAdmin

Steg 5) Frågekörningen är klar. Den ska returnera följande:

Matchande delsträngar med pgAdmin

Exempel 2:

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

Det bör returnera följande:

Matchande delsträngar med pgAdmin

Här är nästa exempel:

SELECT substring('Guru99' from 5);

Det bör returnera följande:

Matchande delsträngar med pgAdmin

Exempel 3:

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

Det bör returnera följande:

Matchande delsträngar med pgAdmin

Låt oss nu köra exemplet med hjälp av boktabellen i demodatabasen:

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2) I navigeringsfältet till vänster klickar du på Databaser och sedan på Demo.

Matchande delsträngar med pgAdmin

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

Matchande delsträngar med pgAdmin

Det bör returnera följande:

PostgreSQL Delsträngsresultat

Vi har nu en grundläggande idé om namnet på varje bok.

Matcha delsträngar med SQL Regular Expression

För att åstadkomma samma sak på pgAdmin, gör följande:

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2) Klicka på frågeverktygsikonen.

Matcha delsträngar med SQL Regular Expression

Frågeredigeringsfönstret öppnas.

Steg 3) Skriv följande fråga i redigeringsfönstret.

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

Steg 4) Klicka på ikonen Kör för att köra frågan.

Matcha delsträngar med SQL Regular Expression

Det bör returnera följande:

Matcha delsträngar med SQL Regular Expression

Ladda ner den databas som används i denna handledning

Vanliga frågor

SUBSTR är ett kortare alias för SUBSTRING och returnerar en del av en sträng. SUBSTRING stöder även SQL-standardnyckelorden FROM och FOR plus reguljära POSIX-uttryck, medan SUBSTR endast accepterar kommaseparerade positions- och längdargument.

PostgreSQL SUBSTRING är ett-baserat, så det första tecknet sitter på position 1, inte 0. Om startpositionen 1 anges returneras strängen från dess första tecken och framåt.

När POSIX-mönstret inte matchar någonting returnerar SUBSTRING NULL istället för en tom sträng. Genom att testa resultatet med IS NULL kan du hantera rader där det förväntade mönstret saknas.

Använd ett reguljärt uttryck som fångar det som följer tecknet. Till exempel returnerar SUBSTRING(email FROM '@(.*)') allt efter @-tecknet, vilket ger dig domändelen av varje e-postadress.

Använd SUBSTRING när du behöver den första matchande texten som ett enkelt värde. Välj regexp_matches() när du vill att varje matchning eller flera capture-grupper ska returneras som en array, eftersom SUBSTRING bara returnerar den första matchningen.

AI-assistenter som GitHub Copilot omvandlar en beskrivning på ett enkelt engelskt språk till ett POSIX-mönster, förklarar vad varje token matchar och föreslår teststrängar, vilket minskar behovet av trial-and-error när man bygger delsträngar.tracfrågor.

Ja. Beskriv den del av texten du vill ha, så skapar AI-assistenten ett utkast till ett SUBSTRING-anrop med korrekta positioner eller reguljära uttryck, vilket du kan köra och förfina inuti pgAdmin.

Ja, POSIX SUBSTRING-matchning är som standard skiftlägeskänslig. För att matcha oavsett skiftläge, använd en lägre bokstav i båda ingångarna, till exempel SUBSTRING(lower(namn) FROM lower(mönster)), så att stora och små bokstäver behandlas på samma sätt.

Sammanfatta detta inlägg med: