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

एक सीमांकित कॉलम को एक अलग तालिका में विभाजित करने के लिए कुशल क्वेरी

स्प्लिट फंक्शन बनाएं:

CREATE FUNCTION dbo.SplitStrings(@List NVARCHAR(MAX))
RETURNS TABLE
AS
   RETURN ( SELECT Item FROM
       ( SELECT Item = x.i.value('(./text())[1]', 'nvarchar(max)')
         FROM ( SELECT [XML] = CONVERT(XML, '<i>'
         + REPLACE(@List, '.', '</i><i>') + '</i>').query('.')
           ) AS a CROSS APPLY [XML].nodes('i') AS x(i) ) AS y
       WHERE Item IS NOT NULL
   );
GO

फिर सभी कर्सर और लूपिंग बकवास से छुटकारा पाएं और यह करें:

INSERT dbo.mrhierlookup
(
  heiraui,
  aui
)
SELECT s.Item, m.aui
  FROM dbo.mrhier3 AS m
  CROSS APPLY dbo.SplitStrings(m.ptr) AS s
GROUP BY s.Item, m.aui;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सएमएल के लिए एसक्यूएल के साथ एचटीएमएल टेबल बनाएं

  2. SQL सर्वर 2016:एक डेटाबेस का बैकअप लें

  3. Microsoft SQL Server 2012 क्वेरी प्रबंधन स्टूडियो में JDBC 4.0 से अधिक लेकिन सेकंड (सेकंड) क्यों लेती है?

  4. जहां कॉमा सीमांकित मान वाले कॉलम में मान

  5. उदाहरण के साथ SQL सर्वर इनर जॉइन बेसिक्स