Substring() függvény SQL Serverben: Használat példával
⚡ Okos összefoglaló
SUBSTRING() függvény SQL Serverben, pl.tracEgy karakter, szöveg vagy bináris kifejezés egy részét adja vissza, egy kiválasztott kezdőpozícióból kiindulva meghatározott számú karaktert ad vissza, és természetes módon párosul a CHARINDEX függvénnyel elválasztójel-alapú elemzéshez.
Mi az a Substring()?
A SUBSTRING() egy függvény a következőben: SQL , amely lehetővé teszi a felhasználó számára, hogy igény szerint egy adott karakterláncból részkarakterláncot származtasson. SUBSTRING() pl.tracEgy megadott hosszúságú karakterláncot ad vissza, amely egy adott helyről indul a bemeneti karakterláncban. A SUBSTRING() célja az SQL-ben, hogy a karakterlánc egy adott részét adja vissza.
A részstring() szintaxisa
SUBSTRING(Expression, Starting Position, Total Length)
Itt:
- A SUBSTRING() kifejezés a SQL Server lehet bármilyen karakter, bináris szám, szöveg vagy kép. A Kifejezés az a forráskarakterlánc, amelyből az alkarakterlánc lekérésre kerül.
- A Kezdő pozíció határozza meg a kifejezésben azt a pozíciót, ahonnan az új alkarakterláncnak kezdődnie kell.
- A Teljes hossz a kifejezésből származó részkarakterlánc teljes várható hossza, a kezdőpozíciótól kezdve.
A SUBSTRING() használatának szabályai
- Mindhárom argumentum kötelező az MS SQL SUBSTRING() függvényben.
- Ha a Kezdő pozíció nagyobb, mint a kifejezésben megengedett maximális karakterszám, akkor az SQL Server SUBSTRING() függvénye semmit sem ad vissza.
- A teljes hossz meghaladhatja az eredeti karakterlánc maximális karakterhosszát. Ebben az esetben az eredményül kapott részkarakterlánc a teljes karakterlánc, a kifejezés kezdő pozíciójától a kifejezés utolsó karakteréig.
Az alábbi ábra a SUBSTRING() függvény használatát szemlélteti az SQL Serverben:
T-SQL részkarakterlánc-példák
Feltételezés: Tegyük fel, hogy van egy ' nevű táblánkGuru99' két oszloppal és négy sorral, ahogy az alább látható. Ezt fogjuk használni:Guru99 lábas asztal a következő példákban:
1. lekérdezés: SUBSTRING() az SQL-ben, amelynek hossza kisebb, mint a kifejezés teljes maximális hossza.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Eredmény: Az alábbi ábra a 'Tutorial_name' oszlop alkarakterláncát jeleníti meg 'SUB' oszlopként. A kezdőpozíció 1, a hossz 2, tehát az első két karakter kerül visszaadásra:
2. lekérdezés: SUBSTRING() az SQL Serverben, amelynek hossza nagyobb, mint a kifejezés teljes maximális hossza.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Eredmény: Az alábbi diagram a 'Tutorial_name' oszlop alkarakterláncát jeleníti meg 'SUB' oszlopként. Annak ellenére, hogy az alkarakterlánc hossza nagyobb, mint a kifejezés teljes maximális hossza, nem keletkezik hiba, és a lekérdezés a teljes karakterláncot adja vissza a kezdőpozíciótól kezdve:
SUBSTRING CHARINDEX-szel az SQL Serverben
A SUBSTRING() függvény egy nagyon gyakori valós felhasználási módja a következő:tracolyan szöveg, amely egy elválasztójel előtt vagy után áll, például a domain egy e-mail címben. Önmagában a SUBSTRING() függvénynek fix kezdőpozícióra van szüksége, de az elválasztójel pozíciója soronként változik. A CHARINDEX() függvény ezt úgy oldja meg, hogy visszaadja egy karakter pozícióját egy karakterláncon belül:
CHARINDEX(substring_to_find, expression [, start_location])
A CHARINDEX() függvény SUBSTRING() függvénybe ágyazásával a kezdőpozíció dinamikussá válik. Az alábbi példa megtalálja a következőt: @ szimbólum, és mindent visszaad, ami utána van. A változó a minta értékét tartalmazza:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Itt a CHARINDEX('@', @Email) megkeresi a @ szimbólum pozícióját, az 1 hozzáadása mögé lép, majd a SUBSTRING() függvény végrehajtja az ex karaktert.traca fennmaradó karaktereket. A fenti érték esetén a lekérdezés a következő tartományt adja vissza: guru99.comEz a CHARINDEX-plusz-SUBSTRING minta a strukturált karakterláncok elemzésének szabványos módja a T-SQL-ben.
SUBSTRING vs. LEFT és RIGHT az SQL Serverben
Az SQL Server a LEFT() és RIGHT() függvényeket is biztosítja karakterek kinyerésére egy karakterlánc elejéről vagy végéről. Ezek rövidebbek, de a két végére korlátozódnak. A SUBSTRING() a legrugalmasabb, mivel bármely pozícióban kezdődhet. Az alábbi táblázat összehasonlítja őket:
| Funkció | érvek | Extracts-től | Egyenértékű SUBSTRING() |
| BALRA(kifejezés, n) | 2 | A karakterlánc kezdete | SUBSTRING(kifejezés, 1, n) |
| JOBB(kifejezés, n) | 2 | A húr vége | SUBSTRING(kifejezés, LEN(kifejezés) – n + 1, n) |
| SUBSTRING(kifejezés, kezdet, hossz) | 3 | Bármilyen pozíciót | Nem alkalmazható |
Röviden, a LEFT() és RIGHT() függvények kényelmes gyorsbillentyűk a karakterláncok végeinek lekérdezésére, míg a SUBSTRING() az általános eseteket kezeli, beleértve a középről vett karaktereket is.
Negatív, nulla és NULL argumentumok a SUBSTRING függvényben
Az alapszabályokon túl hasznos tudni, hogyan viselkedik a SUBSTRING() az éleken. Amikor a kezdőpozíció nulla vagy negatív, az SQL Server kiszámítja a (kezdet + hossz – 1) effektív hosszt, és az első pozíciótól kezdi az olvasást. Ha bármelyik argumentum NULL, az eredmény NULL. Az alábbi táblázat, a hivatalos adatokkal összehasonlítva ALSTRING (Transact-SQL) hivatkozás, ezeket az eseteket mutatja be:
| Hívás | Eredmény | Ok |
| SUBSTRING('Guru99', 1, 4) | Guru | Normál hívás: négy karakter az első pozíciótól. |
| SUBSTRING('Guru99', 0, 3) | Gu | Kezdjük egy alatt: a tényleges hossz 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | A karakterláncon túli hossz hiba nélkül visszaadja a maradékot. |
| SUBSTRING('Guru99', 3, NULL) | NULL | Egy NULL argumentum a teljes eredményt NULL-lá teszi. |
Ezen szélső esetek ismerete megakadályozza a meglepetéseket, amikor a kiindulási pozíciót egy másik oszlopból vagy egy változó ami lehet nulla vagy NULL.





