Substring() SQL Serveris: kuidas kasutada koos näitega
⚡ Nutikas kokkuvõte
SUBSTRING() SQL Serveris, näitekstracTagastab märgi, teksti või binaaravaldise osa, tagastades valitud alguspunktist määratud arvu märke ja paaristub loomulikult funktsiooniga CHARINDEX eraldajapõhiseks parsimiseks.

Mis on alamstring()?
SUBSTRING() on funktsioon, mis asub SQL mis võimaldab kasutajal vastavalt vajadusele mis tahes stringist alamstringi tuletada. SUBSTRING() nttracTagastab kindla pikkusega stringi, mis algab sisendstringi kindlast kohast. SUBSTRING() eesmärk SQL-is on tagastada stringi kindel osa.
Alamstringi () süntaks
SUBSTRING(Expression, Starting Position, Total Length)
siin:
- SUBSTRING() avaldis SQL Server võib olla mis tahes märk, kahendkood, tekst või pilt. Avaldis on lähtetekst, millest alamsõnge hangitakse.
- Alguspositsioon (Starting Position) määrab avaldises positsiooni, kust uus alamstring peaks algama.
- Kogupikkus on avaldisest tuleneva alamstringi eeldatav kogupikkus alates alguspositsioonist.
SUBSTRING() kasutamise reeglid
- Kõik kolm argumenti on MS SQL SUBSTRING() funktsioonis kohustuslikud.
- Kui algpositsioon on suurem kui avaldise maksimaalne tähemärkide arv, siis SQL Serveri funktsioon SUBSTRING() ei tagasta midagi.
- Kogupikkus võib ületada algse stringi maksimaalset tähemärkide arvu. Sellisel juhul on tulemuseks olev alamstring kogu string, alates avaldise alguspositsioonist kuni avaldise viimase tähemärgini.
Allolev diagramm illustreerib SUBSTRING() funktsiooni kasutamist SQL Serveris:
T-SQL-i alamstringi näited
Eeldus: Oletame, et meil on tabel nimega 'Guru99' kahe veeru ja nelja reaga, nagu allpool näidatud. Me kasutame seda 'Guru99' laud järgmistes näidetes:
Päring 1: SUBSTRING() SQL-is, mille pikkus on väiksem kui avaldise maksimaalne kogupikkus.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Tulemus: Allolev diagramm kuvab veeru 'Tutorial_name' alamstringi veeruna 'SUB'. Alguspositsioon on 1 ja pikkus on 2, seega tagastatakse kaks esimest märki:
Päring 2: SUBSTRING() SQL Serveris, mille pikkus on suurem kui avaldise maksimaalne kogupikkus.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Tulemus: Allolev diagramm kuvab veeru 'Tutorial_name' alamstringi veeruna 'SUB'. Isegi kui alamstringi pikkus on suurem kui avaldise maksimaalne kogupikkus, ei teki viga ja päring tagastab kogu stringi alates alguspunktist:
SQL Serveris on alamstring koos CHARINDEX-iga
SUBSTRING() funktsiooni väga levinud kasutusala reaalses maailmas on extracTekst, mis asub eraldaja ees või järel, näiteks domeen e-posti aadressis. Funktsioon SUBSTRING() vajab iseenesest fikseeritud alguspositsiooni, kuid eraldaja asukoht varieerub reati. Funktsioon CHARINDEX() lahendab selle, tagastades märgi asukoha stringis:
CHARINDEX(substring_to_find, expression [, start_location])
CHARINDEX() funktsiooni SUBSTRING() funktsiooni sisse pesastades muutub alguspunkt dünaamiliseks. Allolev näide leiab @ sümbol ja tagastab kõik pärast seda. A muutuja hoiab valimi väärtust:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Siin leiab CHARINDEX('@', @Email) @-sümboli asukoha, 1 lisamine liigutab selle taha ja SUBSTRING() seejärel extracülejäänud tähemärgid. Ülaltoodud väärtuse korral tagastab päring domeeni guru99.comSee CHARINDEX-plus-SUBSTRING muster on T-SQL-is struktureeritud stringide parsimise standardviis.
SUBSTRING vs LEFT ja RIGHT SQL Serveris
SQL Server pakub ka funktsioone LEFT() ja RIGHT() märkide ammutamiseks stringi algusest või lõpust. Nende kirjutamine on lühem, kuid nende toimivus piirdub kahe otsaga. SUBSTRING() on kõige paindlikum, kuna see võib alata mis tahes positsioonilt. Allolev tabel võrdleb neid:
| funktsioon | Argumendid | Extracts alates | Samaväärne alamstring() |
| VASAK(avaldis, n) | 2 | Stringi algus | SUBSTRING(avaldis, 1, n) |
| PAREMALE(avaldis, n) | 2 | Stringi lõpp | SUBSTRING(avaldis; LEN(avaldis) – n + 1; n) |
| SUBSTRING(avaldis, algus, pikkus) | 3 | Igasugune positsioon | ei ole kohaldatav |
Lühidalt, LEFT() ja RIGHT() on mugavad otseteed stringi otste jaoks, samas kui SUBSTRING() käsitleb üldist juhtumit, sealhulgas keskelt võetud märke.
Negatiivsed, null- ja NULL-argumendid alamstringis
Lisaks põhireeglitele on kasulik teada, kuidas SUBSTRING() servades käitub. Kui alguspunkt on null või negatiivne, arvutab SQL Server efektiivse pikkuse (algus + pikkus – 1) ja alustab lugemist esimesest positsioonist. Kui mõni argument on NULL, on tulemuseks NULL. Allolev tabel, mida on ametliku standardi suhtes kontrollitud ALAMSÕNA (Transact-SQL) viide näitab neid juhtumeid:
| Helista | Tulemus | Põhjus |
| SUBSTRING('Guru99', 1, 4) | Guru | Tavaline kutse: neli tähemärki alates esimesest positsioonist. |
| SUBSTRING('Guru99', 0, 3) | Gu | Alusta ühest allapoole: efektiivne pikkus on 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Length beyond string tagastab jäägi ilma veateateta. |
| SUBSTRING('Guru99', 3, NULL) | NULL | NULL argument muudab kogu tulemuse NULL-iks. |
Nende äärejuhtumite tundmine hoiab ära üllatused, kui alguspositsioon arvutatakse mõne teise veeru või muu põhjal. muutuja see võib olla null või NULL.




