यह आलेख SQL सर्वर में आईडी (या अन्य मान) की सूची के आधार पर पंक्तियों का चयन करने के दो तरीके प्रस्तुत करता है। यह उन परिदृश्यों में उपयोगी हो सकता है जहां आपके पास आईडी की अल्पविराम से अलग सूची है, और आप उन आईडी से मेल खाने वाली पंक्तियों के लिए अपने डेटाबेस से पूछताछ करना चाहते हैं।
मान लें कि आपके पास आईडी की निम्न सूची है:
1,4,6,8
और इसलिए अब आप उन अभिलेखों के लिए एक तालिका को क्वेरी करना चाहते हैं जिनके आईडी कॉलम में उनमें से कोई भी मान (यानी 1, 4, 6 या 8) है।
इसके बारे में जाने के दो तरीके यहां दिए गए हैं।
विकल्प 1:IN ऑपरेटर
एक विकल्प IN
. का उपयोग करना है ऑपरेटर आपकी क्वेरी के भीतर केवल उन पंक्तियों को वापस करने के लिए जो सूची में निर्दिष्ट हैं।
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistId IN (1,4,6,8);
परिणाम:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
जैसा कि आप देख सकते हैं, ArtistId
. में मान कॉलम हमारी सूची से मेल खाता है।
विकल्प 2:STRING_SPLIT() फ़ंक्शन
SQL सर्वर 2016 से शुरू होकर, STRING_SPLIT()
फ़ंक्शन का उपयोग एक निर्दिष्ट विभाजक का उपयोग करके एक वर्ण अभिव्यक्ति को विभाजित करने के लिए किया जा सकता है। दूसरे शब्दों में, आप इसका उपयोग अल्पविराम-सीमांकित सूची को विभाजित करने के लिए कर सकते हैं।
पिछले उदाहरण के समान डेटा का उपयोग करने वाला एक उदाहरण यहां दिया गया है:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1,4,6,8', ',') ON value = ArtistId;
परिणाम:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
STRING_SPLIT()
. का एक फ़ायदा यह है कि यह आपको यह निर्दिष्ट करने की अनुमति देता है/(आवश्यकता है) कि सूची के लिए सीमांकक के रूप में क्या उपयोग किया जा रहा है। यह तब उपयोगी हो सकता है जब आपकी सूची अपने परिसीमन के रूप में किसी भिन्न वर्ण का उपयोग करती है।
यहां एक ही उदाहरण दिया गया है, लेकिन अंतरिक्ष से अलग की गई सूची के लिए:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1 4 6 8', ' ') ON value = ArtistId;
परिणाम:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
संगतता स्तर
ध्यान दें कि STRING_SPLIT()
केवल 130 या उससे अधिक के संगतता स्तर वाले डेटाबेस पर उपलब्ध है। आप निम्न कथन के साथ डेटाबेस के संगतता स्तर को बदल सकते हैं:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 130;
या इसे SQL सर्वर 2017 स्तर तक लाने के लिए:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 140;
जहां MyDatabase
डेटाबेस का नाम है।
यह भी देखें कि SQL सर्वर में डेटाबेस के संगतता स्तर की जाँच कैसे करें।