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

अल्पविराम से अलग की गई स्ट्रिंग को अलग-अलग पंक्तियों में बदलना

आप SQL सर्वर से अद्भुत पुनरावर्ती कार्यों का उपयोग कर सकते हैं:

नमूना तालिका:

CREATE TABLE Testdata
(
    SomeID INT,
    OtherID INT,
    String VARCHAR(MAX)
);

INSERT Testdata SELECT 1,  9, '18,20,22';
INSERT Testdata SELECT 2,  8, '17,19';
INSERT Testdata SELECT 3,  7, '13,19,20';
INSERT Testdata SELECT 4,  6, '';
INSERT Testdata SELECT 9, 11, '1,2,3,4';

क्वेरी

WITH tmp(SomeID, OtherID, DataItem, String) AS
(
    SELECT
        SomeID,
        OtherID,
        LEFT(String, CHARINDEX(',', String + ',') - 1),
        STUFF(String, 1, CHARINDEX(',', String + ','), '')
    FROM Testdata
    UNION all

    SELECT
        SomeID,
        OtherID,
        LEFT(String, CHARINDEX(',', String + ',') - 1),
        STUFF(String, 1, CHARINDEX(',', String + ','), '')
    FROM tmp
    WHERE
        String > ''
)
SELECT
    SomeID,
    OtherID,
    DataItem
FROM tmp
ORDER BY SomeID;
-- OPTION (maxrecursion 0)
-- normally recursion is limited to 100. If you know you have very long
-- strings, uncomment the option

आउटपुट

 SomeID | OtherID | DataItem 
--------+---------+----------
 1      | 9       | 18       
 1      | 9       | 20       
 1      | 9       | 22       
 2      | 8       | 17       
 2      | 8       | 19       
 3      | 7       | 13       
 3      | 7       | 19       
 3      | 7       | 20       
 4      | 6       |          
 9      | 11      | 1        
 9      | 11      | 2        
 9      | 11      | 3        
 9      | 11      | 4        


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL - डेटाबेस में सभी तालिकाओं में कॉलम जोड़ें [कर्सर उदाहरण]

  2. SQL सर्वर को हबस्पॉट CRM से कनेक्ट करें

  3. SQL सर्वर (T-SQL) में STRING_ESCAPE () फ़ंक्शन कैसे काम करता है

  4. SQL सर्वर में थोक डेटा फ़ाइलें सम्मिलित करें

  5. SQL सर्वर (T-SQL) में डेटाबेस मेल प्रोफ़ाइल अपडेट करें