Kako razdeliti niz z ločenim znakom v strežniku SQL?



Preizkusite Naš Instrument Za Odpravo Težav

V tem članku bomo razpravljali o več načinih razdelitve ločene vrednosti niza. To je mogoče doseči z uporabo več metod, vključno z.



  • Uporaba funkcije STRING_SPLIT za razdelitev niza
  • Ustvarite uporabniško določeno funkcijo z vrednostjo tabele za razdelitev niza,
  • Uporabite XQuery za razdelitev vrednosti niza in pretvoritev ločenega niza v XML

Najprej moramo ustvariti tabelo in vanjo vstaviti podatke, ki bodo uporabljeni v vseh treh metodah. Tabela mora vsebovati eno vrstico z ID-jem polja in nizom z ločevalnimi znaki. Ustvarite tabelo z imenom 'študent' z uporabo naslednje kode.



USTVARI TABELO študenta (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))

V eno vrstico vstavite imena študentov, ločena z vejicami, tako da izvedete naslednjo kodo.



VSTAVITE V VREDNOTE študenta (ime_študenta) ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Ustvarjanje tabele in vstavljanje podatkov

Preverite, ali so bili podatki vstavljeni v tabelo ali ne, z uporabo naslednje kode.

izberite * med študentom

Preverite, ali so bili podatki vstavljeni v tabelo 'študent'



1. način: Za razdelitev niza uporabite funkcijo STRING_SPLIT

V SQL Server 2016, »STRING_SPLIT« uvedena je bila funkcija, ki se lahko uporablja s stopnjo združljivosti 130 in več. Če uporabljate različico SQL Server 2016 ali novejšo, lahko uporabite to vgrajeno funkcijo.

Poleg tega »STRING_SPLIT« vnese niz, ki ima razmejene podnize, in vnese en znak, ki ga bo uporabil kot ločilo ali ločilo. Funkcija prikaže tabelo z enim stolpcem, katere vrstice vsebujejo podnize. Ime izhodnega stolpca je » Vrednost ' . Ta funkcija dobi dva parametra. Prvi parameter je niz, drugi pa ločilni znak ali ločilo, na podlagi katerega moramo niz razdeliti. Izhod vsebuje tabelo z enim stolpcem, v kateri so podnizi. Ta izhodni stolpec je imenovan 'Vrednost' kot lahko vidimo na spodnji sliki. Poleg tega »STRING SPLIT« funkcija table_valued vrne prazno tabelo, če je vhodni niz NULL.

Raven združljivosti baze podatkov:

Vsakzbirka podatkovjepovezansdokompatibilnostravni.Toomogočazbirke podatkovvedenjedobitizdružljivs thjeposebnoSQLStrežnikrazličicototečena.

Zdaj bomo poklicali funkcijo 'string_split', da razdelimo niz, ločen z vejicami. Toda stopnja združljivosti je bila manjša od 130, zato je prišlo do napake. 'Neveljavno ime predmeta' SPLIT_STRING ''

Napaka se pojavi, če je raven združljivosti baze podatkov nižja od 130 'Neveljavno ime predmeta split_string'

Tako moramo stopnjo združljivosti baze podatkov nastaviti na 130 ali več. Zato bomo sledili tem korakom za nastavitev stopnje združljivosti baze podatkov.

  • Najprej nastavite bazo podatkov na »single_user_access_mode« z uporabo naslednje kode.
ALTER DATABASE SET SINGLE_USER
  • Drugič, spremenite stopnjo združljivosti baze podatkov z uporabo naslednje kode.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • Z naslednjo kodo vrnite bazo podatkov v način za več uporabnikov.
ALTER DATABASE SET 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

Rezultat bo:

Spremenite stopnjo združljivosti na 130

Zdaj zaženite to kodo, da dobite zahtevani rezultat.

IZJAVITI @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * FROM STRING_SPLIT (@string_value,