Neste post de blogue, vamos aprender sobre a função STRING_SPLIT que foi anteriormente introduzida no SQL Server 2016 mas ainda não amplamente adoptada na indústria. Aprenderemos hoje como dividir a cadeia de valores separada por vírgula numa coluna utilizando STRING_SPLIT.
Por exemplo, se tiver o seguinte conjunto de resultados e se quiser que cada um dos valores da cadeia separada por vírgula da última coluna numa linha separada, anteriormente tinha de usar uma função muito complicada na coluna que era um assassino de desempenho.
Agora podemos apenas utilizar a função STRING_SPLIT e podemos conseguir isso muito rapidamente. Vamos entender com um exemplo simples.
Primeiro, vamos criar uma amostra de dados.
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
Próximo, vamos escrever um código que irá dividir a cadeia de valores separada numa coluna.
SELECT ID, Student, value FROM StudentClasses CROSS APPLY STRING_SPLIT(Classes, ',')GO
É isso mesmo. Estamos conversados. É uma tarefa muito simples com a ajuda de uma nova função. Pode limpar ainda mais os seus dados de amostra, executando seguindo o comando.
DROP TABLE StudentClassesGO
Remember, se alguma vez receber o seguinte erro:
Msg 208, Nível 16, Estado 1, Linha 7
Nome do objecto inválido ‘STRING_SPLIT’.
Sugiro que leia este post do blogue para a solução do erro acima. Esta função só funcionará se tiver nível de compatibilidade até 2016 ou posterior.