sql >> Databáze >  >> RDS >> Sqlserver

Jak převést seznam oddělený čárkami na řádky na serveru SQL Server

Máte tedy seznam oddělený čárkami a nyní jej musíte vložit do databáze. Jde ale o to, že každou hodnotu v seznamu musíte vložit do vlastního řádku tabulky. V zásadě tedy musíte seznam rozdělit na samostatné hodnoty a poté každou z těchto hodnot vložit do nového řádku.

T-SQL má nyní STRING_SPLIT() funkce, díky které je tento typ operace hračkou. Tato funkce byla poprvé dostupná v SQL Server 2016 a je dostupná u databází s úrovní kompatibility 130 nebo vyšší (jak zkontrolovat úroveň kompatibility databáze a jak ji změnit).

Příklad

Řekněme, že máme následující seznam oddělený čárkami:

Cat,Dog,Rabbit

Můžeme použít STRING_SPLIT() funkce pro oddělení každé hodnoty do vlastního řádku. Takhle:

SELECT value 
FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');

Výsledek:

value 
------
Cat   
Dog   
Rabbit

Takže už jsme v polovině. Ve skutečnosti, v závislosti na vašich požadavcích, to může být vše, co potřebujete.

Vložte hodnoty do tabulky

Můžeme vzít výše uvedený kód a použít jej s INSERT() prohlášení. Jinými slovy, můžeme tyto hodnoty vložit do tabulky a každá položka seznamu bude umístěna na svém vlastním řádku. Chcete-li to provést, stačí před předchozí kód přidat INSERT() prohlášení.

Příklad:

INSERT INTO Animals (AnimalName)
SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');

Tím se každá hodnota vloží do vlastního řádku v AnimalName ve sloupci Animals tabulka.

Zkontrolujte výsledky

Chcete-li zkontrolovat výsledky, spusťte SELECT prohlášení proti tabulce:

SELECT * 
FROM Animals;

Výsledek:

AnimalId  AnimalName
--------  ----------
1         Cat       
2         Dog       
3         Rabbit    

Tento výsledek předpokládá, že AnimalId sloupec je IDENTITY sloupec (s každým novým řádkem se automaticky vkládají přírůstkové hodnoty).

Úplný skript

Zde je skript, který vám umožní provést výše uvedený příklad najednou. Vytvoří databázi, vytvoří tabulku, vloží data a poté zkontroluje výsledky.

Vytvořte databázi:

/* Create database */
USE master;
CREATE DATABASE Nature;

Udělejte zbytek:

/* 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. Jak získat pouze číslice z řetězce v mysql?

  2. SQL IN operátor pro začátečníky

  3. Extrahujte rok z data v PostgreSQL

  4. Nové funkce kompatibility Oracle v PostgresPlus Advanced Server 9.3Beta