Kā sadalīt virkni ar atdalītu rakstzīmi SQL Server?



Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Šajā rakstā mēs apspriedīsim vairākus veidus, kā sadalīt norobežoto virknes vērtību. To var panākt, izmantojot vairākas metodes, ieskaitot.



  • Funkcijas STRING_SPLIT izmantošana virknes sadalīšanai
  • Izveidojiet lietotāja definētu tabulas vērtību funkciju, lai sadalītu virkni,
  • Izmantojiet XQuery, lai sadalītu virknes vērtību un pārveidotu norobežotu virkni XML

Pirmkārt, mums ir jāizveido tabula un jāievieto tajā dati, kas tiks izmantoti visās trijās metodēs. Tabulā jābūt vienai rindai ar lauka ID un virkni ar atdalītāja rakstzīmēm. Izmantojot šo kodu, izveidojiet tabulu ar nosaukumu “students”.



IZVEIDOT GALDA studentu (ID INTENTITĀTE (1, 1), studenta_nosaukums VARCHAR (MAX))

Ievietojiet studentu vārdus, kas atdalīti ar komatiem, vienā rindā, izpildot šādu kodu.



IEVADĪT studenta (studenta_vārds) VĒRTĪBAS ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Tabulas izveide un datu ievietošana

Pārbaudiet, vai dati ir ievietoti tabulā vai neizmanto šo kodu.

atlasiet * no studenta

Pārbaudiet, vai dati ir ievietoti tabulā “students”



1. metode: izmantojiet funkciju STRING_SPLIT, lai sadalītu virkni

SQL Server 2016, “STRING_SPLIT” tika ieviesta funkcija, kuru var izmantot ar 130 un augstāku saderības līmeni. Ja izmantojat 2016. gada SQL Server versiju vai jaunāku, varat izmantot šo iebūvēto funkciju.

Turklāt “STRING_SPLIT” ievada virkni, kurā ir norobežotas apakškārtas, un ievada vienu rakstzīmi, ko izmantot kā atdalītāju vai atdalītāju. Funkcija izvada vienas kolonnas tabulu, kuras rindās ir apakšvirsmas. Izvades kolonnas nosaukums ir “ Vērtība ” . Šī funkcija iegūst divus parametrus. Pirmais parametrs ir virkne, bet otrais ir atdalītāja raksturs vai atdalītājs, uz kura pamata mums ir jāsadala virkne. Izejā ir vienas kolonnas tabula, kurā atrodas apakšvirknes. Šī izvades kolonna ir nosaukta “Vērtība” kā redzam zemāk redzamajā attēlā. Turklāt “STRING SPLIT” funkcija table_valued atgriež tukšu tabulu, ja ievades virkne ir NULL.

Datu bāzes saderības līmenis:

Katrsdatu bāzēirsavienotsaruzsaderībalīmenī.iespējodatu bāzēuzvedībauzbūtsaderīgsar thirīpašiSQLServerisversijatoskrienieslēgts.

Tagad mēs sauksim funkciju “string_split”, lai sadalītu virknes, kuras norobežo komati. Bet saderības līmenis bija mazāks par 130, tāpēc tika izvirzīta šāda kļūda. “Nederīgs objekta nosaukums“ SPLIT_STRING ””

Kļūda rodas, ja datu bāzes saderības līmenis ir zemāks par 130 “Nederīgs objekta nosaukums split_string”

Tādējādi mums ir jāiestata datu bāzes saderības līmenis līdz 130 vai augstākam. Tāpēc mēs veiksim šo soli, lai iestatītu datu bāzes saderības līmeni.

  • Vispirms iestatiet datu bāzē “single_user_access_mode”, izmantojot šādu kodu.
MAINĪT DATU BĀZES KOMPLEKTU SINGLE_USER
  • Otrkārt, mainiet datu bāzes saderības līmeni, izmantojot šādu kodu.
MAINĪT DATU BĀZES KOMPLEKTIVĀCIJU_LĪME = 130
  • Pārveidojiet datu bāzi daudzlietotāju piekļuves režīmā, izmantojot šādu kodu.
MAINĪT DATU BĀZES KOMPLEKTU DAUDZ_LIETOTĀJS
LIETOT [master] GO ALTER DATU BĀZE [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centrality] SET MULTI_USER GO

Rezultāts būs:

Mainiet saderības līmeni uz 130

Tagad palaidiet šo kodu, lai iegūtu nepieciešamo rezultātu.

DECLARE @string_value VARCHAR (MAX); SET @ string_value = 'Monrojs, Montanezs, Marolahakis, Neglijs, Olbraits, Garofolo, Pereira, Džonsons, Vāgners, Konrāds' SELECT * FROM STRING_SPLIT (@string_value,