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

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.

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

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.

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

SERVADORSQL - Split Comma Separated Value String numa Coluna Utilizando STRING_SPLIT split_string_example2

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.

SERVADORSQL - Split Comma Separated Value String numa Coluna Utilizando STRING_SPLIT split_string_example1

SERVADORSQL - Split Comma Separated Value String in a Column Using STRING_SPLIT split_string_example1
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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *