तो आपके पास अल्पविराम से अलग की गई सूची है, और अब आपको इसे डेटाबेस में सम्मिलित करने की आवश्यकता है। लेकिन बात यह है कि, आपको सूची में प्रत्येक मान को अपनी तालिका पंक्ति में सम्मिलित करने की आवश्यकता है। तो मूल रूप से, आपको सूची को उसके अलग-अलग मानों में विभाजित करने की आवश्यकता है, फिर उनमें से प्रत्येक मान को एक नई पंक्ति में सम्मिलित करें।
T-SQL में अब एक STRING_SPLIT()
है फ़ंक्शन जो इस प्रकार के ऑपरेशन को आसान बनाता है। यह फ़ंक्शन पहले SQL सर्वर 2016 में उपलब्ध था, और 130 या उससे अधिक के संगतता स्तर वाले डेटाबेस पर उपलब्ध है (अपने डेटाबेस संगतता स्तर की जांच कैसे करें और इसे कैसे बदलें)।
उदाहरण
मान लें कि हमारे पास निम्न अल्पविराम-सीमांकित सूची है:
Cat,Dog,Rabbit
हम STRING_SPLIT()
. का उपयोग कर सकते हैं प्रत्येक मान को अपनी पंक्ति में अलग करने के लिए कार्य करता है। इस तरह:
SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
परिणाम:
value ------ Cat Dog Rabbit
तो हम पहले से ही आधे रास्ते में हैं। वास्तव में, आपकी आवश्यकताओं के आधार पर, आपको बस यही चाहिए।
मानों को तालिका में सम्मिलित करें
हम उपरोक्त कोड ले सकते हैं और इसका उपयोग INSERT()
. के साथ कर सकते हैं बयान। दूसरे शब्दों में, हम उन मानों को एक तालिका में सम्मिलित कर सकते हैं, और प्रत्येक सूची आइटम अपनी पंक्ति में रहेगा। ऐसा करने के लिए, हम बस पिछले कोड को INSERT()
. के साथ उपसर्ग कर सकते हैं बयान।
उदाहरण:
INSERT INTO Animals (AnimalName) SELECT value FROM STRING_SPLIT('Cat,Dog,Rabbit', ',');
यह प्रत्येक मान को AnimalName
. की अपनी पंक्ति में सम्मिलित करता है Animals
. का कॉलम टेबल।
परिणाम जांचें
परिणामों की जांच करने के लिए, एक SELECT
चलाएं टेबल के सामने बयान:
SELECT * FROM Animals;
परिणाम:
AnimalId AnimalName -------- ---------- 1 Cat 2 Dog 3 Rabbit
यह परिणाम मानता है कि AnimalId
कॉलम एक IDENTITY
है स्तंभ (वृद्धिशील मान प्रत्येक नई पंक्ति के साथ स्वचालित रूप से सम्मिलित किए जाते हैं)।
पूरी स्क्रिप्ट
यहां एक स्क्रिप्ट है जो आपको उपरोक्त उदाहरण को एक बार में करने की अनुमति देती है। यह डेटाबेस बनाता है, तालिका बनाता है, डेटा सम्मिलित करता है, फिर परिणामों की जांच करता है।
डेटाबेस बनाएं:
/* Create database */ USE master; CREATE DATABASE Nature;
बाकी काम करें:
/* 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;