Masz więc listę oddzieloną przecinkami, a teraz musisz ją wstawić do bazy danych. Ale chodzi o to, że musisz wstawić każdą wartość z listy do własnego wiersza tabeli. Zasadniczo musisz podzielić listę na osobne wartości, a następnie wstawić każdą z tych wartości do nowego wiersza.
T-SQL ma teraz funkcję STRING_SPLIT() funkcja, która sprawia, że tego typu operacje są dziecinnie proste. Ta funkcja była po raz pierwszy dostępna w SQL Server 2016 i jest dostępna w bazach danych o poziomie zgodności 130 lub wyższym (jak sprawdzić poziom zgodności bazy danych i jak go zmienić).
Przykład
Załóżmy, że mamy następującą listę rozdzielaną przecinkami:
Cat,Dog,Rabbit
Możemy użyć STRING_SPLIT() funkcji, aby oddzielić każdą wartość do własnego wiersza. Tak:
SELECT value
FROM STRING_SPLIT('Cat,Dog,Rabbit', ','); Wynik:
value ------ Cat Dog Rabbit
Więc jesteśmy już w połowie drogi. W rzeczywistości, w zależności od Twoich wymagań, może to być wszystko, czego potrzebujesz.
Wstaw wartości do tabeli
Możemy wziąć powyższy kod i użyć go z INSERT() oświadczenie. Innymi słowy, możemy wstawić te wartości do tabeli, a każdy element listy będzie znajdował się w osobnym wierszu. Aby to zrobić, możemy po prostu poprzedzić poprzedni kod INSERT() oświadczenie.
Przykład:
INSERT INTO Animals (AnimalName)
SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
Powoduje to wstawienie każdej wartości do osobnego wiersza w AnimalName kolumna Animals tabela.
Sprawdź wyniki
Aby sprawdzić wyniki, uruchom SELECT oświadczenie przy stole:
SELECT * FROM Animals;
Wynik:
AnimalId AnimalName -------- ---------- 1 Cat 2 Dog 3 Rabbit
Ten wynik zakłada, że AnimalId kolumna to IDENTITY kolumna (wartości zwiększające się są wstawiane automatycznie z każdym nowym wierszem).
Pełny skrypt
Oto skrypt, który pozwala wykonać powyższy przykład za jednym razem. Tworzy bazę danych, tworzy tabelę, wstawia dane, a następnie sprawdza wyniki.
Utwórz bazę danych:
/* Create database */ USE master; CREATE DATABASE Nature;
Zrób resztę:
/* 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;