sql >> Database >  >> RDS >> Sqlserver

Een door komma's gescheiden lijst converteren naar rijen in SQL Server

U hebt dus een door komma's gescheiden lijst en nu moet u deze in de database invoegen. Maar het punt is dat je elke waarde in de lijst in zijn eigen tabelrij moet invoegen. Dus eigenlijk moet u de lijst in afzonderlijke waarden splitsen en vervolgens elk van die waarden in een nieuwe rij invoegen.

T-SQL heeft nu een STRING_SPLIT() functie die dit soort handelingen een fluitje van een cent maakt. Deze functie was voor het eerst beschikbaar in SQL Server 2016 en is beschikbaar voor databases met een compatibiliteitsniveau van 130 of hoger (hoe u uw databasecompatibiliteitsniveau kunt controleren en hoe u dit kunt wijzigen).

Voorbeeld

Laten we zeggen dat we de volgende door komma's gescheiden lijst hebben:

Cat,Dog,Rabbit

We kunnen de STRING_SPLIT() . gebruiken functie om elke waarde in zijn eigen rij te scheiden. Zoals dit:

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

Resultaat:

value 
------
Cat   
Dog   
Rabbit

We zijn dus al halverwege. In feite, afhankelijk van uw vereisten, is dit misschien alles wat u nodig heeft.

Voeg de waarden in een tabel in

We kunnen de bovenstaande code nemen en gebruiken met een INSERT() uitspraak. Met andere woorden, we kunnen die waarden in een tabel invoegen en elk lijstitem zal in zijn eigen rij staan. Om dit te doen, kunnen we eenvoudig de vorige code voorafgaan met een INSERT() verklaring.

Voorbeeld:

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

Dit voegt elke waarde in zijn eigen rij in de AnimalName kolom van de Animals tafel.

Controleer de resultaten

Voer een SELECT . uit om de resultaten te controleren verklaring tegen de tafel:

SELECT * 
FROM Animals;

Resultaat:

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

Dit resultaat gaat ervan uit dat de AnimalId kolom is een IDENTITY kolom (oplopende waarden worden automatisch ingevoegd bij elke nieuwe rij).

Het volledige script

Hier is een script waarmee u het bovenstaande voorbeeld in één keer kunt doen. Het maakt de database aan, maakt de tabel aan, voegt de gegevens in en controleert vervolgens de resultaten.

Maak de database:

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

Doe de rest:

/* 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. Hoe verander ik de KARAKTERSET (en COLLATION) in een database?

  2. Huidige verbindingen in MySQL Workbench bekijken met behulp van de GUI

  3. Fix "ERROR 1054 (42S22):Onbekende kolom '...' in 'bestellingsclausule' bij gebruik van UNION in MySQL

  4. Afstand tussen postcodes berekenen in PHP