Kako podijeliti niz razgraničenim znakom u SQL poslužitelju?



Isprobajte Naš Instrument Za Uklanjanje Problema

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,