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;