Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak przekonwertować listę rozdzielaną przecinkami na wiersze w SQL Server

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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak SESSION_CONTEXT() działa w SQL Server

  2. Znak ucieczki w SQL Server

  3. Różnica między liczbami, liczbami zmiennoprzecinkowymi i dziesiętnymi w SQL Server

  4. Zliczaj wiersze na godzinę w SQL Server z pełną wartością daty i godziny jako wynikiem

  5. Jak mogę wykonać żądanie HTTP z serwera SQL?