SQL SERVER – Split Comma Separated Value String in a Column Using STRING_SPLIT

In questo post del blog, impareremo la funzione STRING_SPLIT che è stata precedentemente introdotta in SQL Server 2016 ma non ancora ampiamente adottata nel settore. Impareremo oggi come dividere una stringa di valori separati da virgola in una colonna usando STRING_SPLIT.

SQL SERVER - Split Comma Separated Value String in a Column Using STRING_SPLIT split_string_example0

SQL SERVER - Split Comma Separated Value String in a Column Using STRING_SPLIT split_string_example0

Per esempio, se avete il seguente resultset e se volete ogni valore della stringa separata da virgole dell’ultima colonna in una riga separata, prima dovevate usare una funzione molto complicata sulla colonna che era un killer di prestazioni.

SQL SERVER - Split Comma Separated Value String in a Column Using STRING_SPLIT split_string_example2

SQL SERVER - Split Comma Separated Value String in a Column Using STRING_SPLIT split_string_example2

Ora possiamo semplicemente usare la funzione STRING_SPLIT e raggiungere questo obiettivo molto rapidamente. Cerchiamo di capire con un semplice esempio.

Per prima cosa, creiamo un esempio di dati.

CREATE TABLE StudentClasses(ID INT, Student VARCHAR(100), Classes VARCHAR(100))GOINSERT INTO StudentClassesSELECT 1, 'Mark', 'Maths,Science,English'UNION ALLSELECT 2, 'John', 'Science,English'UNION ALLSELECT 3, 'Robert', 'Maths,English'GOSELECT *FROM StudentClassesGO

In seguito, scriviamo un codice che dividerà la stringa di valore del comando separato in una colonna.

SELECT ID, Student, value FROM StudentClasses CROSS APPLY STRING_SPLIT(Classes, ',')GO

Ecco fatto. Abbiamo finito. È un compito molto semplice con l’aiuto della nuova funzione. Potete pulire ulteriormente i vostri dati di esempio eseguendo il seguente comando.

SQL SERVER - Split Comma Separated Value String in a Column Using STRING_SPLIT split_string_example1

SQL SERVER - Dividere una stringa di valori separati da virgola in una colonna utilizzando STRING_SPLIT split_string_example1
DROP TABLE StudentClassesGO

Ricorda, se ricevi il seguente errore:

Msg 208, Level 16, State 1, Line 7
Nome oggetto non valido ‘STRING_SPLIT’.

Vi suggerisco di leggere questo post sul blog per la soluzione dell’errore di cui sopra. Questa funzione funzionerà solo se avete il livello di compatibilità al 2016 o successivo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *