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.
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.
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.
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.