Cuprins:
- Nivelul de compatibilitate al bazei de date:
- În primul rând, setați baza de date la „single_user_access_mode” utilizând următorul cod
- În al doilea rând, modificați nivelul de compatibilitate al bazei de date utilizând următorul cod
- Puneți baza de date înapoi în modul de acces cu mai mulți utilizatori utilizând următorul cod
- Metoda 2: Pentru a împărți șirul, creați o funcție de tabelă definită de utilizator
- Metoda 3: Utilizați XQuery pentru a împărți valoarea șirului și a transforma șirul delimitat în XML
Video: Cum Se împarte Un șir De Un Caracter Delimitat în SQL Server?
2024 Autor: Kayla Nelson | [email protected]. Modificat ultima dată: 2024-01-11 14:28
În acest articol, vom discuta mai multe modalități de a împărți valoarea șirului delimitat. Poate fi realizat folosind mai multe metode, inclusiv.
- Utilizarea funcției STRING_SPLIT pentru a împărți șirul
- Creați funcția de tabelă definită de utilizator pentru a împărți șirul,
- Utilizați XQuery pentru a împărți valoarea șirului și a transforma șirul delimitat în XML
În primul rând, trebuie să creăm tabel și să inserăm date în acesta, care vor fi utilizate în toate cele trei metode. Tabelul trebuie să conțină un singur rând cu ID câmp și șir cu caractere delimitatoare în el. Creați un tabel numit „student” folosind următorul cod.
CREATE TABLE student (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))
Introduceți numele studenților separați prin virgule într-un singur rând executând următorul cod.
INSERT INTO student (student_name) VALORI („Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad”)
Verificați dacă datele au fost inserate în tabel sau nu folosind următorul cod.
selectați * din student
Metoda 1: utilizați funcția STRING_SPLIT pentru a împărți șirul
În SQL Server 2016, „STRING_SPLIT” a fost introdusă funcția care poate fi utilizată cu nivelul de compatibilitate 130 și mai mare. Dacă utilizați versiunea 2016 SQL Server sau o versiune ulterioară, puteți utiliza această funcție de încorporare.
În plus „STRING_SPLIT” șir de intrări care are sub-șiruri delimitate și introduce un caracter de utilizat ca delimitator sau separator. Funcția redă tabelul cu o singură coloană ale cărui rânduri conțin șirurile secundare. Numele coloanei de ieșire este „ Valoare". Această funcție primește doi parametri. Primul parametru este șir, iar al doilea este caracterul delimitator sau separatorul pe baza căruia trebuie să împărțim șirul. Ieșirea conține un tabel cu o singură coloană în care sunt prezente șiruri de caractere. Această coloană de ieșire este denumită "Valoare" după cum putem vedea în figura de mai jos. Mai mult, „STRING SPLIT” funcția table_valued returnează un tabel gol dacă șirul de intrare este NULL.
Nivelul de compatibilitate al bazei de date:
Fiecare bază de date este conectată la nivel de compatibilitate. Permite comportamentul bazei de date să fie compatibil cu versiunea specială SQL Server pe care rulează.
Acum vom apela funcția „string_split” pentru a împărți șirul delimitat de virgule. Dar nivelul de compatibilitate a fost mai mic de 130, prin urmare a fost ridicată următoarea eroare. „Numele obiectului este nevalid‘ SPLIT_STRING ’”
Astfel, trebuie să setăm nivelul de compatibilitate a bazei de date la 130 sau mai mult. Deci, vom urma acești pași pentru a seta nivelul de compatibilitate al bazei de date.
În primul rând, setați baza de date la „single_user_access_mode” utilizând următorul cod
ALTER SET BAZA DE DATE SET SINGLE_USER
În al doilea rând, modificați nivelul de compatibilitate al bazei de date utilizând următorul cod
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
Puneți baza de date înapoi în modul de acces cu mai mulți utilizatori utilizând următorul cod
ALTER SETARE BAZA DE DATE 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
Ieșirea va fi:
Acum executați acest cod pentru a obține rezultatul necesar.
DECLARAȚI @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * FROM STRING_SPLIT (@string_value, ',')
Rezultatul pentru această interogare va fi:
Metoda 2: Pentru a împărți șirul, creați o funcție de tabelă definită de utilizator
Cu siguranță, această metodă tradițională este acceptată de toate versiunile SQL Server. În această tehnică vom crea o funcție definită de utilizator pentru a împărți șirul de caractere delimitate folosind „ SUBSTRING "Funcție" CHARINDEX ”Și while loop. Această funcție poate fi utilizată pentru a adăuga date la tabelul de ieșire, deoarece tipul său de returnare este „tabel”.
CREATE FUNCTION [dbo]. [Split_string] (@string_value NVARCHAR (MAX), @delimiter_character CHAR (1)) RETURNS @result_set TABLE (splited_datNVARCHAR (MAX)) BEGIN DECLARE @start_position INT, @ending_position INT SELECT @start_position = 1 ending_position = CHARINDEX (@delimiter_character, @string_value) WHILE @start_position <LEN (@string_value) + 1 BEGIN IF @ending_position = 0 SET @ending_position = LEN (@string_value) + 1 INSERT INTO @result_set (splited_data) VALUES (SUB string_value, @start_position, @ending_position - @start_position)) SET @start_position = @ending_position + 1 SET @ending_position = CHARINDEX (@delimiter_character, @string_value, @start_position) END RETURN END
Acum executați scriptul de mai jos pentru a apela funcția de împărțire pentru a împărți șirul după caracterul delimitator.
DECLARAți @student_name VARCHAR (MAX); DECLARAți @delimiter CHAR (1); SET @ delimiter = ',' SET @student_name = (SELECT student_name FROM student) SELECT * FROM dbo.split_string (@student_name, @delimiter)
Setul de rezultate va fi așa.
Metoda 3: Utilizați XQuery pentru a împărți valoarea șirului și a transforma șirul delimitat în XML
Deoarece funcțiile definite de utilizator sunt exhaustive din resurse, trebuie să evităm aceste funcții. O altă opțiune este funcția încorporată „string_split”, dar această funcție poate fi utilizată pentru baza de date pentru care nivelul de compatibilitate este de 130 sau mai mare. Așa că vine o altă soluție pentru a rezolva această sarcină dificilă. șirul poate fi împărțit folosind următoarele XML.
DECLARA @xml_value AS XML, @string_value AS VARCHAR (2000), @delimiter_value AS VARCHAR (15) SET @ string_value = (SELECT student_name FROM student) SET @delimiter_value = ',' SET @xml_value = Cast (('' + Înlocuiți (@string_value, @delimiter_value, '') + '') AS XML) SELECT @xml_value
Rezultatul pentru această interogare va fi:
Dacă doriți să vizualizați întregul fișier XML. Apasa pe link. Odată ce ați făcut clic, codul link-ului va arăta astfel.
Acum șirul XML ar trebui procesat în continuare. În cele din urmă, vom folosi „x-Query” pentru a interoga din XML.
DECLARA @xml_value AS XML, @string_value AS VARCHAR (2000), @delimiter_value AS VARCHAR (15) SET @ string_value = (SELECT student_name FROM student) SET @delimiter_value = ',' SET @xml_value = Cast (('' + Înlocuiți (@string_value, @delimiter_value, '') + '') AS XML) SELECT xmquery ('.'). value ('.', 'VARCHAR (15)') AS VALUE FROM @ xml_value.nodes ('/ studentname') AS x (m)
Rezultatul va fi astfel:
Recomandat:
Evaluarea Vulnerabilității SQL Azure Poate Fi Acum Gestionată Prin Cmdleturile SQL VA PowerShell
Prin lansarea de către Microsoft a modulului AzureRM 6.6.0 Azure Resource Manager, administratorii pot utiliza acum Structured Query Language (SQL) VA Powershell
Cum Se Remediază "nu S-a Reușit Crearea Sesiunii KVP Eroare De șir 0x8007007a"
Recent, au fost raportate probleme legate de deconectarea utilizatorilor de câteva ori pe zi, de la serverele Windows 2012 RD. Cu privire la
Cum Se Scrie O Scrisoare De Caracter?
O scrisoare cu caracter este mai mult o scrisoare de recomandare, care susține candidatul, indiferent dacă este pentru un loc de muncă, școală sau chiar pentru instanță. Acționează ca un
Activision împarte Jucătorii Call Of Duty: Black Ops 4 Prin Etichetarea Proprietarilor Non-season Pass
O nouă actualizare a Call of Duty: Black Ops 4 a făcut ca utilizatorii care nu dețin abonamentul de sezon să fie evidențiați. Un triunghi galben este acum vizibil lângă
Cum Să Remediați Aplicațiile De Mesagerie IOS Cu Erori De Telugu Cu Caracter IOS
Recent, un dezvoltator Twitter a găsit o eroare iOS care poate provoca blocarea oricărei aplicații de mesagerie iOS la primirea unui mesaj text dintr-o singură literă cu un