Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में अल्पविराम से अलग की गई सूची को पंक्तियों में कैसे बदलें

तो आपके पास अल्पविराम से अलग की गई सूची है, और अब आपको इसे डेटाबेस में सम्मिलित करने की आवश्यकता है। लेकिन बात यह है कि, आपको सूची में प्रत्येक मान को अपनी तालिका पंक्ति में सम्मिलित करने की आवश्यकता है। तो मूल रूप से, आपको सूची को उसके अलग-अलग मानों में विभाजित करने की आवश्यकता है, फिर उनमें से प्रत्येक मान को एक नई पंक्ति में सम्मिलित करें।

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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर:तालिका में पंक्तियों की अधिकतम संख्या

  2. SQL:एक पंक्ति को अपडेट करें और 1 क्वेरी के साथ एक कॉलम मान लौटाएं

  3. पहली पंक्ति में कैसे जुड़ें

  4. प्रत्येक ग्रुप बाय एक्सप्रेशन में कम से कम एक कॉलम होना चाहिए जो बाहरी संदर्भ नहीं है

  5. SQL सर्वर में किसी संख्या को 2 दशमलव स्थानों पर प्रारूपित करने के लिए 4 कार्य