समस्या:
आप SQL सर्वर में एक स्ट्रिंग को विभाजित करना चाहते हैं।
उदाहरण 1:
आपके पास एक वाक्य है, और आप इसे स्पेस कैरेक्टर से विभाजित करना चाहेंगे।
समाधान 1:
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
परिणाम इस तरह दिखता है:
मान |
---|
एक |
उदाहरण |
वाक्य। |
चर्चा:
SQL सर्वर में STRING_SPLIT (स्ट्रिंग, विभाजक) फ़ंक्शन दूसरे तर्क में विभाजक द्वारा पहले तर्क में स्ट्रिंग को विभाजित करता है। वाक्य को शब्दों में विभाजित करने के लिए, वाक्य को STRING_SPLIT()
के पहले तर्क के रूप में निर्दिष्ट करें फ़ंक्शन और '' दूसरे तर्क के रूप में।
STRING_SPLIT()
मूल्य नामक कॉलम में परिणाम। स्ट्रिंग के प्रत्येक भाग को एक अलग पंक्ति में प्राप्त करने के लिए, STRING_SPLIT(string, separator)
से मान चुनें . उदाहरण के लिए,
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
बेशक, आप किसी अन्य विभाजक, जैसे, अल्पविराम का उपयोग करके एक स्ट्रिंग को विभाजित कर सकते हैं। आप किसी अन्य कॉलम की तरह ही कॉलम का नाम भी बदल सकते हैं।
उदाहरण 2:
texts
तालिका, कुछ वाक्य हैं।
वाक्य |
---|
यह पहला वाक्य है। |
और ये रहा दूसरा। |
आप वाक्यों को स्पेस कैरेक्टर से विभाजित करना चाहते हैं।
समाधान 2:
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
परिणाम इस तरह दिखता है:
मान |
---|
यह |
है |
द |
पहले |
वाक्य। |
और |
यहां |
द |
अन्य |
एक। |
चर्चा:
पिछले उदाहरण की तरह, STRING_SPLIT (पाठ, विभाजक) फ़ंक्शन विभाजक द्वारा पहले तर्क के रूप में दी गई स्ट्रिंग को विभाजित करता है। इस बार, आपके पास ध्यान रखने के लिए कुछ वाक्य हैं; ये वाक्य texts
. में संगृहीत हैं टेबल। यही कारण है कि आपको क्रॉस एप्लाई का उपयोग करने की आवश्यकता है; अधिक विशेष रूप से,
texts CROSS APPLY STRING_SPLIT(sentence, ' ')
इसका उपयोग FROM
. में करें खंड। इसका अर्थ है कि दाईं ओर (STRING_SPLIT(sentence, ' ')
) बाईं ओर की तालिका की प्रत्येक पंक्ति पर लागू होता है (texts
) यही कारण है कि दाईं ओर बाईं ओर की तालिका के स्तंभों का उपयोग किया जा सकता है (यहां, texts
तालिका।) यहां आपको प्राप्त होने वाली क्वेरी है।
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
उदाहरण 3:
texts
तालिका, दो कॉलम हैं:id
और sentence
।
आईडी | वाक्य |
---|---|
1 | यह पहला वाक्य है। |
2 | और ये रहा दूसरा। |
आप वाक्यों को स्पेस कैरेक्टर से विभाजित करना चाहते हैं और वाक्यों की आईडी भी दिखाना चाहते हैं।
समाधान 3:
SELECT id, value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
परिणाम इस तरह दिखता है:
आईडी | मान |
---|---|
1 | यह |
1 | है |
1 | द |
1 | पहले |
1 | वाक्य. |
2 | और |
2 | यहां |
2 | द |
2 | अन्य |
2 | एक। |
चर्चा:
यह उदाहरण बहुत समान है, लेकिन आप id
. भी देखना चाहते हैं कॉलम। इस कॉलम को देखने के लिए, बस इसे SELECT
. में जोड़ें सूची और अल्पविराम शामिल करना याद रखें। आप परिणाम में वाक्य के भागों के साथ वाक्य की आईडी देखेंगे। उदाहरण के लिए, पहला वाक्य 5 भागों में विभाजित है और इसकी आईडी 1
. है . इसलिए, परिणाम तालिका में सभी 5 भागों के लिए आईडी 1
. होगी . अगला वाक्य, आईडी के साथ 2
, को भी 5 भागों में विभाजित किया गया है, और इनमें से प्रत्येक भाग को id = 2
. के साथ दिखाया जाएगा ।