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

संग्रहित प्रक्रिया में एसक्यूएल इन क्लॉज

इसे पूरा करने के कई तरीके हैं:

  1. डायनेमिक SQL, जैसा कि इस लेख में बताया गया है:http://asheej.blogspot.com/2012/04/how-to-use-ms-sql-in-clause-with.html

  2. प्रत्येक आइटम को चर में निर्दिष्ट करें (यदि आपके पास बहुत कुछ है तो यह काफी बदसूरत हो सकता है):

    @var1 varchar(20),@var2 varchar(20),@var3 varchar(20)

  3. स्ट्रिंग को टेबल वेरिएबल में बदलने के लिए स्प्लिट फंक्शन लिखें, उनमें से कई हैं। यह मेरा निजी पसंदीदा है:http://dataeducation.com/faster -मोर-स्केलेबल-एसक्लक्लर-स्ट्रिंग-स्प्लिटिंग/

  4. तालिका मान पैरामीटर का उपयोग करें (2008):http://www.techrepublic.com/blog/datacenter/passing-table-valued-parameters-in-sql-server-2008/168

  5. यहाँ CHARINDEX का उपयोग करते हुए एक छोटी सी तरकीब दी गई है (ध्यान दें कि यह दृष्टिकोण गैर-साध्य है):

आपकी स्ट्रिंग इस प्रकार है:'abc,def'

CHARINDEX Using का उपयोग करना , आप खोज स्ट्रिंग और मान दोनों को पैड करते हैं जिसे आप अपने डिलीमीटर के साथ खोज स्ट्रिंग में खोजना चाहते हैं। तो मेरे छोटे से उदाहरण का उपयोग करते हुए, स्ट्रिंग ', एबीसी, डीईएफ़' बन जाएगी, शुरुआत और अंत में अतिरिक्त अल्पविरामों पर ध्यान दें। फिर फ़ील्ड डेटा के साथ भी ऐसा ही करें। अगर आपके डेटा में कॉमा हैं, तो आपको डिलीमीटर को किसी और चीज़ से बदलना होगा, जैसे कि char(2), या सेमी-कोलन, या जो भी हो।

फिर खोज करने के लिए:

WHERE CHARINDEX ( ',' + expressionToFind + ',' , ',' + expressionToSearch ',') > 0

सीमांकक पैडिंग खोज को "abcabc" खोजने से रोकता है लेकिन "abc", सटीक मिलान ढूंढेगा।

यदि आप 2005 का उपयोग कर रहे हैं, तो मैं वास्तव में एक तेज़ स्प्लिट फ़ंक्शन प्राप्त करूंगा ताकि आप गतिशील 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. SQL सर्वर और स्पेक्टर/मेल्टडाउन कमजोरियाँ

  3. SQL सर्वर फ्लोट डेटा प्रकार गणना बनाम दशमलव

  4. SQL सर्वर संग्रहीत कार्यविधि स्रोत को प्रोग्रामेटिक रूप से पुनर्प्राप्त करें जो SQL सर्वर प्रबंधन स्टूडियो gui द्वारा लौटाए गए स्रोत के समान है?

  5. लोकलहोस्ट से कनेक्ट नहीं हो सकता है, लेकिन SQL सर्वर 2008 में कंप्यूटर नाम के साथ कर सकता है