खोज…


Sql सर्वर 2016 में एक स्ट्रिंग विभाजित करें

SQL Server 2016 में आखिरकार उन्होंने स्प्लिट स्ट्रिंग फंक्शन पेश किया है: STRING_SPLIT

पैरामीटर: यह दो मापदंडों को स्वीकार करता है

स्ट्रिंग :

किसी भी वर्ण प्रकार की अभिव्यक्ति है (जैसे कि नवरच, वरचर, नचर या चार)।

विभाजक :

किसी भी वर्ण प्रकार (जैसे nvarchar (1), varchar (1), nchar (1) या char (1)) की एक एकल वर्ण अभिव्यक्ति है, जिसका उपयोग संघनित तारों के लिए विभाजक के रूप में किया जाता है।

नोट: आपको हमेशा जांचना चाहिए कि क्या अभिव्यक्ति एक गैर-रिक्त स्ट्रिंग है।

उदाहरण:

Select Value
From STRING_SPLIT('a|b|c','|')

ऊपर के उदाहरण में

String    : 'a|b|c'
separator : '|'

परिणाम :

+-----+
|Value|
+-----+
|a    |
+-----+
|b    |
+-----+
|c    |
+-----+

यदि यह एक खाली स्ट्रिंग है:

SELECT value
FROM STRING_SPLIT('',',')

परिणाम :

  +-----+
  |Value|
  +-----+
1 |     |
  +-----+

आप WHERE क्लॉज जोड़कर उपरोक्त स्थिति से बच सकते हैं

SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''

XML का उपयोग करके Sql Server 2008/2012/2014 में स्प्लिट स्ट्रिंग

चूंकि कोई STRING_SPLIT फ़ंक्शन नहीं है, STRING_SPLIT हमें पंक्तियों में स्ट्रिंग को विभाजित करने के लिए XML हैक का उपयोग करने की आवश्यकता है:

उदाहरण:

SELECT split.a.value('.', 'VARCHAR(100)') AS Value 
FROM   (SELECT Cast ('<M>' + Replace('A|B|C', '|', '</M><M>')+ '</M>' AS XML) AS Data) AS A 
       CROSS apply data.nodes ('/M') AS Split(a); 

परिणाम:

+-----+
|Value|
+-----+
|A    |
+-----+
|B    |
+-----+
|C    |
+-----+

टी-एसक्यूएल टेबल चर और एक्सएमएल

Declare @userList Table(UserKey VARCHAR(60))
Insert into @userList values ('bill'),('jcom'),('others')
--Declared a table variable and insert 3 records

Declare @text XML
Select  @text = (
        select UserKey  from @userList for XML Path('user'), root('group')
) 
--Set the XML value from Table 

Select @text

--View the variable value
XML: \<group>\<user>\<UserKey>bill\</UserKey>\</user>\<user>\<UserKey>jcom\</UserKey>\</user>\<user>\<UserKey>others\</UserKey>\</user>\</group>


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow