Substring() in SQL Server: hoe te gebruiken met een voorbeeld
⚡ Slimme samenvatting
SUBSTRING() in SQL Server voorbeeldtracts retourneert een gedeelte van een teken, tekst of binaire expressie, waarbij een vast aantal tekens vanaf een gekozen startpositie wordt geretourneerd, en vormt een natuurlijke combinatie met CHARINDEX voor parsing op basis van scheidingstekens.

Wat is Subtekenreeks()?
SUBSTRING() is een functie in SQL waarmee de gebruiker naar behoefte een substring uit een willekeurige string kan afleiden. SUBSTRING() extracts is een tekenreeks van een opgegeven lengte, beginnend vanaf een bepaalde locatie in een invoertekenreeks. Het doel van SUBSTRING() in SQL is om een specifiek gedeelte van de tekenreeks terug te geven.
Syntaxis voor Subtekenreeks()
SUBSTRING(Expression, Starting Position, Total Length)
Hier:
- De SUBSTRING()-expressie in SQL Server De expressie kan elk willekeurig teken, binair getal, tekst of afbeelding zijn. De expressie is de bronstring waaruit de substring wordt opgehaald.
- De startpositie bepaalt de positie in de expressie waar de nieuwe substring moet beginnen.
- Totale lengte is de totale verwachte lengte van de resulterende substring uit de expressie, beginnend bij de startpositie.
Regels voor het gebruik van SUBSTRING()
- Alle drie de argumenten zijn verplicht in de MS SQL SUBSTRING()-functie.
- Als de startpositie groter is dan het maximale aantal tekens in de expressie, retourneert de SUBSTRING()-functie in SQL Server niets.
- De totale lengte kan de maximale tekenlengte van de oorspronkelijke tekenreeks overschrijden. In dat geval is de resulterende subtekenreeks de volledige tekenreeks, vanaf de startpositie in de expressie tot het laatste teken van de expressie.
Onderstaand diagram illustreert het gebruik van de SUBSTRING()-functie in SQL Server:
Voorbeelden van T-SQL-subtekenreeksen
Aanname: We gaan ervan uit dat we een tabel hebben met de naam 'Guru99' met twee kolommen en vier rijen, zoals hieronder weergegeven. We zullen deze ' gebruikenGuruTabel 99 in de volgende voorbeelden:
Vraag 1: SUBSTRING() in SQL met een lengte die kleiner is dan de totale maximale lengte van de expressie.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Resultaat: Het onderstaande diagram toont de substring van de kolom 'Tutorial_name' als de kolom 'SUB'. De startpositie is 1 en de lengte is 2, dus de eerste twee tekens worden weergegeven:
Vraag 2: SUBSTRING() in SQL Server met een lengte die groter is dan de totale maximale lengte van de expressie.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Resultaat: Het onderstaande diagram toont de substring van de kolom 'Tutorial_name' als de kolom 'SUB'. Hoewel de lengte van de substring groter is dan de totale maximale lengte van de expressie, wordt er geen foutmelding gegenereerd en retourneert de query de volledige tekenreeks vanaf de beginpositie:
SUBSTRING met CHARINDEX in SQL Server
Een veelvoorkomend praktisch gebruik van SUBSTRING() is om uit te drukkentract tekst die voor of na een scheidingsteken staat, zoals het domein in een e-mailadres. SUBSTRING() vereist op zichzelf een vaste startpositie, maar de positie van een scheidingsteken varieert van regel tot regel. De CHARINDEX() functie lost dit op door de positie van een teken binnen een tekenreeks terug te geven:
CHARINDEX(substring_to_find, expression [, start_location])
Door CHARINDEX() binnen SUBSTRING() te nesten, wordt de startpositie dynamisch. Het onderstaande voorbeeld vindt de @ symbool en retourneert alles wat erna komt. A variabele bevat de voorbeeldwaarde:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Hier bepaalt CHARINDEX('@', @Email) de positie van het @-symbool, door er 1 bij op te tellen gaat het symbool verder, en vervolgens gebruikt SUBSTRING() extracts de resterende tekens. Voor de bovenstaande waarde retourneert de query het domein. guru99.comDit CHARINDEX-plus-SUBSTRING-patroon is de standaardmanier om gestructureerde tekenreeksen in T-SQL te parseren.
SUBSTRING versus LEFT en RIGHT in SQL Server
SQL Server biedt ook de functies LEFT() en RIGHT() om tekens vanaf het begin of einde van een tekenreeks te halen. Deze functies zijn korter om te schrijven, maar ze zijn beperkt tot de twee uiteinden. SUBSTRING() is het meest flexibel omdat deze op elke willekeurige positie kan beginnen. De onderstaande tabel vergelijkt ze:
| Functie | argumenten | Extracts van | Equivalent SUBSTRING() |
| LINKS(uitdrukking, n) | 2 | Begin van de reeks | SUBSTRING(expressie, 1, n) |
| RECHTS(uitdrukking, n) | 2 | Einde van de string | SUBSTRING(expressie, LEN(expressie) – n + 1, n) |
| SUBSTRING(uitdrukking, begin, lengte) | 3 | Elke positie | Niet van toepassing |
Kort gezegd zijn LEFT() en RIGHT() handige snelkoppelingen voor de uiteinden van een tekenreeks, terwijl SUBSTRING() het algemene geval afhandelt, inclusief tekens die uit het midden worden gehaald.
Negatieve, nul- en NULL-argumenten in SUBSTRING
Naast de basisregels is het handig om te weten hoe SUBSTRING() zich gedraagt aan de randen. Wanneer de startpositie nul of negatief is, berekent SQL Server een effectieve lengte van (start + lengte – 1) en begint te lezen vanaf positie één. Wanneer een argument NULL is, is het resultaat NULL. De onderstaande tabel is geverifieerd aan de hand van de officiële gegevens. SUBSTRING (Transact-SQL) De referentie toont deze gevallen:
| Bel | Resultaat | Reden |
| SUBSTRING('Guru99', 1, 4) | Guru | Normale aanroep: vier tekens vanaf positie één. |
| SUBSTRING('Guru99', 0, 3) | Gu | Begin onder de één: de effectieve lengte is 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Als de lengte de tekenreeks overschrijdt, wordt het resterende deel zonder foutmelding geretourneerd. |
| SUBSTRING('Guru99', 3, NULL) | NULL | Een NULL-argument maakt het hele resultaat NULL. |
Door deze randgevallen te kennen, worden verrassingen voorkomen wanneer de startpositie wordt berekend vanuit een andere kolom of een variabele Dat kan nul of NULL zijn.




