Substring() i SQL Server: Sådan bruges den med eksempel
⚡ Smart opsummering
SUBSTRING() i SQL Server f.eks.tracts er en del af et tegn, en tekst eller et binært udtryk, der returnerer et bestemt antal tegn fra en valgt startposition og parres naturligt med CHARINDEX til afgrænserbaseret parsing.
Hvad er Substring()?
SUBSTRING() er en funktion i SQL der lader brugeren udlede en delstreng fra en given streng efter behov. SUBSTRING() extracts en streng af en bestemt længde, startende fra en given placering i en inputstreng. Formålet med SUBSTRING() i SQL er at returnere en bestemt del af strengen.
Syntaks for understreng()
SUBSTRING(Expression, Starting Position, Total Length)
Her:
- SUBSTRING()-udtrykket i SQL Server kan være et hvilket som helst tegn, binær fil, tekst eller billede. Udtrykket er kildestrengen, hvorfra delstrengen hentes.
- Startposition bestemmer den position i udtrykket, hvorfra den nye delstreng skal starte.
- Total længde er den samlede forventede længde af den resulterende delstreng fra udtrykket, startende fra startpositionen.
Regler for brug af SUBSTRING()
- Alle tre argumenter er obligatoriske i MS SQL SUBSTRING()-funktionen.
- Hvis startpositionen er større end det maksimale antal tegn i udtrykket, returneres der intet af SUBSTRING()-funktionen i SQL Server.
- Den samlede længde kan overstige den maksimale tegnlængde for den oprindelige streng. I dette tilfælde er den resulterende delstreng hele strengen, startende fra startpositionen i udtrykket til udtrykkets sidste tegn.
Diagrammet nedenfor illustrerer brugen af SUBSTRING()-funktionen i SQL Server:
Eksempler på T-SQL-understrenge
Antagelse: Antag, at vi har en tabel med navnet 'Guru99' med to kolonner og fire rækker, som vist nedenfor. Vi bruger denne 'Guru99'-tabel i følgende eksempler:
Forespørgsel 1: SUBSTRING() i SQL med en længde, der er mindre end udtrykkets samlede maksimale længde.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Resultat: Diagrammet nedenfor viser delstrengen af kolonnen 'Tutorial_name' som kolonnen 'SUB'. Startpositionen er 1, og længden er 2, så de første to tegn returneres:
Forespørgsel 2: SUBSTRING() i SQL Server med en længde, der er større end udtrykkets samlede maksimale længde.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Resultat: Diagrammet nedenfor viser delstrengen i kolonnen 'Tutorial_name' som kolonnen 'SUB'. Selvom delstrengens længde er større end udtrykkets samlede maksimale længde, genereres der ingen fejl, og forespørgslen returnerer hele strengen fra startpositionen og fremefter:
SUBSTRING med CHARINDEX i SQL Server
En meget almindelig brug af SUBSTRING() i den virkelige verden er f.eks.tractekst, der sidder før eller efter en afgrænser, f.eks. domænet i en e-mailadresse. SUBSTRING() behøver i sig selv en fast startposition, men positionen af en afgrænser varierer fra række til række. Funktionen CHARINDEX() løser dette ved at returnere positionen af et tegn i en streng:
CHARINDEX(substring_to_find, expression [, start_location])
Ved at indlejre CHARINDEX() i SUBSTRING() bliver startpositionen dynamisk. Eksemplet nedenfor finder @ symbol og returnerer alt efter det. variabel indeholder stikprøveværdien:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Her finder CHARINDEX('@', @Email) @-tegnets position, tilføjer 1 og flytter sig forbi det, og SUBSTRING() derefter extracde resterende tegn. For ovenstående værdi returnerer forespørgslen domænet guru99.comDette CHARINDEX-plus-SUBSTRING-mønster er standardmåden til at parse strukturerede strenge i T-SQL.
SUBSTRING vs. VENSTRE og HØJRE i SQL Server
SQL Server tilbyder også funktionerne LEFT() og RIGHT() til at hente tegn fra starten eller slutningen af en streng. De er kortere at skrive, men de er begrænsede til de to ender. SUBSTRING() er den mest fleksible, fordi den kan starte på enhver position. Tabellen nedenfor sammenligner dem:
| Funktion | argumenter | Extracts fra | Ækvivalent SUBSTRING() |
| VENSTRE(udtryk, n) | 2 | Start af strengen | DELSTRING(udtryk, 1, n) |
| HØJRE(udtryk, n) | 2 | Enden af strengen | DELSTRING(udtryk, LÆNGDE(udtryk) – n + 1, n) |
| DELSTRING(udtryk, start, længde) | 3 | Enhver stilling | Ikke relevant |
Kort sagt er LEFT() og RIGHT() praktiske genveje til enderne af en streng, mens SUBSTRING() håndterer store og små bogstaver, inklusive tegn taget fra midten.
Negative, nul- og NULL-argumenter i SUBSTRING
Ud over de grundlæggende regler er det nyttigt at vide, hvordan SUBSTRING() opfører sig i kanterne. Når startpositionen er nul eller negativ, beregner SQL Server en effektiv længde på (start + længde – 1) og begynder at læse fra position et. Når et argument er NULL, er resultatet NULL. Tabellen nedenfor, verificeret mod den officielle DELSTRING (Transact-SQL) reference, viser disse tilfælde:
| Ring til os på | Resultat | Årsag |
| DELSTRING('Guru99', 1, 4) | Guru | Normalt opkald: fire tegn fra position et. |
| DELSTRING('Guru99', 0, 3) | Gu | Start under én: effektiv længde er 0 + 3 – 1 = 2. |
| DELSTRING('Guru99', 4, 100) | u99 | Længde ud over strengen returnerer resten uden fejl. |
| DELSTRING('Guru99', 3, NULL) | NULL | Et NULL-argument gør hele resultatet til NULL. |
Kendskab til disse kanttilfælde forhindrer overraskelser, når startpositionen beregnes ud fra en anden kolonne eller en variabel det kunne være nul eller NULL.





