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;