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

एक सूची में सभी आइटम से मेल खाने वाली पंक्तियों का चयन करने के 2 तरीके (टी-एसक्यूएल)

यह आलेख 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 सर्वर में डेटाबेस के संगतता स्तर की जाँच कैसे करें।


  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. बिक्री रिकॉर्ड करने के लिए एक डेटाबेस मॉडलिंग। भाग 1

  3. SQL जॉइन के लिए आपका अंतिम गाइड:क्रॉस जॉइन - भाग 3

  4. Azure SQL डेटाबेस DTU कैलकुलेटर को SentryOne डेटा भेजना

  5. 2020 में डेटा कनेक्टर में बदलाव