U ovom ćemo članku razgovarati o nekoliko načina razdvajanja razgraničene vrijednosti niza. To se može postići pomoću više metoda, uključujući.
- Upotreba funkcije STRING_SPLIT za razdvajanje niza
- Stvorite korisnički definiranu tabličnu funkciju za razdvajanje niza,
- Koristite XQuery da podijelite vrijednost niza i transformirate razdvojeni niz u XML
Prije svega, moramo stvoriti tablicu i u nju umetnuti podatke koji će se koristiti u sve tri metode. Tablica bi trebala sadržavati jedan redak s ID-om polja i nizom s razgraničenjem. Stvorite tablicu pod nazivom 'student' pomoću sljedećeg koda.
STVORI TABELU student (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))
U jedan red umetnite imena učenika odvojena zarezima izvršavanjem sljedećeg koda.
INSERT INTO student (student_name) VRIJEDNOSTI ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')
Stvaranje tablice i umetanje podataka
Provjerite jesu li podaci umetnuti u tablicu ili ne pomoću sljedećeg koda.
odaberite * od učenika
Provjerite jesu li podaci umetnuti u tablicu “student”
Metoda 1: Upotrijebite funkciju STRING_SPLIT za razdvajanje niza
U SQL Server 2016, 'STRING_SPLIT' uvedena je funkcija koja se može koristiti sa stupnjem kompatibilnosti 130 i višim. Ako koristite verziju SQL Server 2016 ili noviju, možete koristiti ovu ugrađenu funkciju.
Nadalje 'STRING_SPLIT' unosi niz koji ima razdvojene podnizove i unosi jedan znak koji će se koristiti kao graničnik ili razdjelnik. Funkcija daje tablicu s jednim stupcem čiji redovi sadrže podnizove. Naziv izlaznog stupca je „ Vrijednost' . Ova funkcija dobiva dva parametra. Prvi parametar je niz, a drugi je znak za razdvajanje ili separator na temelju kojeg moramo podijeliti niz. Izlaz sadrži tablicu s jednim stupcem u kojoj su prisutni podnizovi. Imenuje se ovaj izlazni stupac 'Vrijednost' kao što možemo vidjeti na donjoj slici. Štoviše, “STRING SPLIT” funkcija table_valued vraća praznu tablicu ako je ulazni niz NULL.
Razina kompatibilnosti baze podataka:
Svakibaza podatakajepovezanisdokompatibilnostnivo.Toomogućujethebaze podatakaponašanjedobitikompatibilans thjeposebnoSQLPoslužiteljverzijatotrčina.
Sada ćemo pozvati funkciju 'string_split' za razdvajanje niza odvojenih zarezima. Ali razina kompatibilnosti bila je manja od 130, stoga je podignuta sljedeća pogreška. 'Nevažeći naziv objekta' SPLIT_STRING ''
Pojavljuje se pogreška ako je razina kompatibilnosti baze podataka niža od 130 'Nevažeći naziv objekta split_string'
Stoga moramo postaviti razinu kompatibilnosti baze podataka na 130 ili više. Stoga ćemo slijediti ove korake za postavljanje razine kompatibilnosti baze podataka.
- Prije svega postavite bazu podataka na „single_user_access_mode“ pomoću sljedećeg koda.
IZMJENI BAZU BAZA PODEŠI SINGLE_USER
- Drugo, promijenite razinu kompatibilnosti baze podataka pomoću sljedećeg koda.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
- Vratite bazu podataka u višekorisnički način pristupa pomoću sljedećeg koda.
IZMJENI BAZU PODATAKA PODEŠI MULTI_USER
USE [master] GO ALTER DATABASE [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centrality] SET MULTI_USER GO
Izlaz će biti:
Promijenite razinu kompatibilnosti na 130
Sada pokrenite ovaj kod da biste dobili potreban rezultat.
PROGLAŠI @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * FROM STRING_SPLIT (@string_value,