Substring() u SQL Serveru: Kako koristiti s primjerom
⚡ Pametni sažetak
SUBSTRING() u SQL Serveru npr.tracts vraća dio znaka, teksta ili binarnog izraza, vraćajući zadani broj znakova s odabrane početne pozicije i prirodno se uparuje s CHARINDEX-om za parsiranje na temelju razdjelnika.

Što je Substring()?
SUBSTRING() je funkcija u SQL što korisniku omogućuje izvođenje podniza iz bilo kojeg zadanog niza prema potrebi. SUBSTRING() npr.tracts niz određene duljine, počevši od zadane lokacije u ulaznom nizu. Svrha SUBSTRING() u SQL-u je vratiti određeni dio niza.
Sintaksa za Substring()
SUBSTRING(Expression, Starting Position, Total Length)
Ovdje:
- Izraz SUBSTRING() u SQL Server može biti bilo koji znak, binarni podatak, tekst ili slika. Izraz je izvorni niz iz kojeg se dohvaća podniz.
- Početna pozicija određuje poziciju u izrazu od koje bi trebao započeti novi podniz.
- Ukupna duljina je ukupna očekivana duljina rezultirajućeg podniza iz izraza, počevši od početne pozicije.
Pravila za korištenje SUBSTRING()
- Sva tri argumenta su obavezna u funkciji MS SQL SUBSTRING().
- Ako je početna pozicija veća od maksimalnog broja znakova u izrazu, funkcija SUBSTRING() u SQL Serveru ne vraća ništa.
- Ukupna duljina može premašiti maksimalnu duljinu znakova izvornog niza. U ovom slučaju, rezultirajući podniz je cijeli niz, počevši od početne pozicije u izrazu do posljednjeg znaka izraza.
Donji dijagram ilustrira korištenje funkcije SUBSTRING() u SQL Serveru:
Primjeri T-SQL podnizova
Pretpostavka: Pretpostavimo da imamo tablicu pod nazivom 'Guru99' s dva stupca i četiri retka, kao što je prikazano dolje. Koristit ćemo ovo'Guru99' tablica u sljedećim primjerima:
Upit 1: SUBSTRING() u SQL-u s duljinom manjom od ukupne maksimalne duljine izraza.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Rezultat: Dijagram u nastavku prikazuje podniz stupca 'Tutorial_name' kao stupac 'SUB'. Početna pozicija je 1, a duljina je 2, pa se vraćaju prva dva znaka:
Upit 2: SUBSTRING() u SQL Serveru s duljinom većom od ukupne maksimalne duljine izraza.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Rezultat: Donji dijagram prikazuje podniz stupca 'Tutorial_name' kao stupac 'SUB'. Iako je duljina podniza veća od ukupne maksimalne duljine izraza, ne javlja se pogreška i upit vraća cijeli niz od početne pozicije nadalje:
SUBSTRING s CHARINDEX u SQL Serveru
Vrlo uobičajena upotreba SUBSTRING() u stvarnom svijetu je za extractekst koji se nalazi prije ili poslije razdjelnika, kao što je domena u adresi e-pošte. Sama po sebi, SUBSTRING() treba fiksni početni položaj, ali položaj razdjelnika varira od retka do retka. Funkcija CHARINDEX() rješava to vraćanjem položaja znaka unutar niza:
CHARINDEX(substring_to_find, expression [, start_location])
Ugniježđivanjem CHARINDEX() unutar SUBSTRING(), početna pozicija postaje dinamična. Primjer u nastavku pronalazi @ simbol i vraća sve nakon njega. A varijabla sadrži vrijednost uzorka:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Ovdje, CHARINDEX('@', @Email) locira poziciju simbola @, dodavanjem 1 pomiče se dalje od njega, a SUBSTRING() zatim extracts preostale znakove. Za gornju vrijednost, upit vraća domenu guru99.comOvaj obrazac CHARINDEX-plus-SUBSTRING je standardni način parsiranja strukturiranih nizova u T-SQL-u.
SUBSTRING u odnosu na LEFT i RIGHT u SQL Serveru
SQL Server također nudi funkcije LEFT() i RIGHT() za izvlačenje znakova s početka ili kraja niza. Kraće ih je napisati, ali su ograničene na dva kraja. SUBSTRING() je najfleksibilnija jer može započeti na bilo kojoj poziciji. Tablica u nastavku ih uspoređuje:
| funkcija | argumenti | Extracts od | Ekvivalent SUBSTRING() |
| LEFT(izraz, n) | 2 | Početak niza | SUBSTRING(izraz, 1, n) |
| DESNO(izraz, n) | 2 | Kraj niza | SUBSTRING(izraz, LEN(izraz) – n + 1, n) |
| SUBSTRING(izraz, početak, duljina) | 3 | Bilo koja pozicija | Nije primjenjivo |
Ukratko, LEFT() i RIGHT() su praktične prečice za krajeve niza, dok SUBSTRING() obrađuje opća pravila, uključujući znakove preuzete iz sredine.
Negativni, nulti i NULL argumenti u SUBSTRING-u
Osim osnovnih pravila, korisno je znati kako se SUBSTRING() ponaša na rubovima. Kada je početna pozicija nula ili negativna, SQL Server izračunava efektivnu duljinu od (početak + duljina – 1) i počinje čitati od pozicije jedan. Kada je bilo koji argument NULL, rezultat je NULL. Tablica u nastavku, provjerena u odnosu na službene SUBSTRING (Transact-SQL) referenca, prikazuje ove slučajeve:
| poziv | Proizlaziti | Razlog |
| SUBSTRING('Guru99', 1, 4) | Guru | Normalni poziv: četiri znaka od pozicije jedan. |
| SUBSTRING('Guru99', 0, 3) | Gu | Počnite ispod jedan: efektivna duljina je 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Duljina izvan niza vraća ostatak, bez greške. |
| SUBSTRING('Guru99', 3, NULA) | NULL | NULL argument čini cijeli rezultat NULL. |
Poznavanje ovih rubnih slučajeva sprječava iznenađenja kada se početna pozicija izračunava iz drugog stupca ili varijabla to može biti nula ili NULL.




