Jadi Anda memiliki daftar yang dipisahkan koma, dan sekarang Anda perlu memasukkannya ke dalam database. Tapi masalahnya, Anda harus memasukkan setiap nilai dalam daftar ke dalam baris tabelnya sendiri. Jadi pada dasarnya, Anda perlu membagi daftar menjadi nilai-nilai yang terpisah, lalu memasukkan masing-masing nilai tersebut ke dalam baris baru.
T-SQL sekarang memiliki STRING_SPLIT()
fungsi yang membuat jenis operasi ini mudah. Fungsi ini pertama kali tersedia di SQL Server 2016, dan tersedia di database dengan tingkat kompatibilitas 130 atau lebih tinggi (cara memeriksa tingkat kompatibilitas database Anda dan cara mengubahnya).
Contoh
Katakanlah kita memiliki daftar yang dibatasi koma berikut:
Cat,Dog,Rabbit
Kita dapat menggunakan STRING_SPLIT()
berfungsi untuk memisahkan setiap nilai ke dalam barisnya sendiri. Seperti ini:
SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
Hasil:
value ------ Cat Dog Rabbit
Jadi kita sudah setengah jalan. Sebenarnya, tergantung pada kebutuhan Anda, mungkin hanya ini yang Anda butuhkan.
Menyisipkan Nilai ke dalam Tabel
Kita dapat mengambil kode di atas dan menggunakannya dengan INSERT()
penyataan. Dengan kata lain, kita dapat menyisipkan nilai-nilai tersebut ke dalam tabel, dan setiap item daftar akan berada di barisnya sendiri. Untuk melakukan ini, kita cukup mengawali kode sebelumnya dengan INSERT()
pernyataan.
Contoh:
INSERT INTO Animals (AnimalName) SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
Ini memasukkan setiap nilai ke dalam barisnya sendiri di AnimalName
kolom Animals
tabel.
Periksa Hasil
Untuk memeriksa hasilnya, jalankan SELECT
pernyataan terhadap tabel:
SELECT * FROM Animals;
Hasil:
AnimalId AnimalName -------- ---------- 1 Cat 2 Dog 3 Rabbit
Hasil ini mengasumsikan bahwa AnimalId
kolom adalah IDENTITY
kolom (peningkatan nilai dimasukkan secara otomatis dengan setiap baris baru).
Skrip Lengkap
Berikut skrip yang memungkinkan Anda melakukan contoh di atas sekaligus. Itu membuat database, membuat tabel, memasukkan data, lalu memeriksa hasilnya.
Buat databasenya:
/* Create database */ USE master; CREATE DATABASE Nature;
Lakukan sisanya:
/* 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;