Portanto, você tem uma lista separada por vírgulas e agora precisa inseri-la no banco de dados. Mas o problema é que você precisa inserir cada valor na lista em sua própria linha da tabela. Então, basicamente, você precisa dividir a lista em seus valores separados e inserir cada um desses valores em uma nova linha.
T-SQL agora tem um
STRING_SPLIT()
função que facilita esse tipo de operação. Essa função foi disponibilizada pela primeira vez no SQL Server 2016 e está disponível em bancos de dados com nível de compatibilidade de 130 ou superior (como verificar o nível de compatibilidade do banco de dados e como alterá-lo). Exemplo
Digamos que temos a seguinte lista delimitada por vírgulas:
Cat,Dog,Rabbit
Podemos usar o
STRING_SPLIT()
função para separar cada valor em sua própria linha. Assim:SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
Resultado:
value ------ Cat Dog Rabbit
Então já estamos na metade. Na verdade, dependendo de suas necessidades, isso pode ser tudo o que você precisa.
Inserir os valores em uma tabela
Podemos pegar o código acima e usá-lo com um
INSERT()
demonstração. Em outras palavras, podemos inserir esses valores em uma tabela e cada item da lista residirá em sua própria linha. Para fazer isso, podemos simplesmente prefixar o código anterior com um INSERT()
demonstração. Exemplo:
INSERT INTO Animals (AnimalName) SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
Isso insere cada valor em sua própria linha no
AnimalName
coluna da coluna Animals
tabela. Verifique os resultados
Para verificar os resultados, execute um
SELECT
declaração contra a tabela:SELECT * FROM Animals;
Resultado:
AnimalId AnimalName -------- ---------- 1 Cat 2 Dog 3 Rabbit
Este resultado assume que o
AnimalId
coluna é uma IDENTITY
coluna (os valores incrementais são inseridos automaticamente a cada nova linha). O roteiro completo
Aqui está um script que permite que você faça o exemplo acima de uma só vez. Ele cria o banco de dados, cria a tabela, insere os dados e verifica os resultados.
Crie o banco de dados:
/* Create database */ USE master; CREATE DATABASE Nature;
Faça o resto:
/* Create table */ USE Nature; CREATE TABLE Animals ( AnimalId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AnimalName nvarchar(255) NOT NULL ); /* Insert data from the list */ INSERT INTO Animals (AnimalName) SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ','); /* Check the result */ SELECT * FROM Animals;