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

वैरिएबल और बीच में आईएन ऑपरेटर के लिए एसक्यूएल वैकल्पिक

आप एक टेबल वेरिएबल (या पैरामीटर अगर यह किसी प्रक्रिया या फ़ंक्शन का हिस्सा है) घोषित कर सकते हैं और इसका उपयोग not in के लिए कर सकते हैं भाग:

DECLARE @NotIn table (
    NotInValues int
)

INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')

और इसे अपने कोड में इस तरह इस्तेमाल करें:

where [Location Code] between '0000' and '0040' 
and [Item No_] not IN (select NotInValues from @NotIn) 
and Gutschrift = '1' 
and [Document Date] between @Start and @Ende    

नोट #1: बड़ी संख्या में मानों के लिए, मौजूद नहीं है शायद बेहतर प्रदर्शन करेगा, न कि

नोट #2: यदि यह एक संग्रहीत प्रक्रिया का एक हिस्सा है, तो आपको एक उपयोगकर्ता परिभाषित तालिका प्रकार बनाने की आवश्यकता होगी, और इसका उपयोग तालिका के मान वाले पैरामीटर को घोषित करने के लिए करें। साथ ही, टेबल वैल्यू वाले पैरामीटर रीड ओनली होते हैं, इसलिए उन पर डीएमएल स्टेटमेंट (इन्सर्ट/अपडेट/डिलीट) करना एक एरर पैदा करेगा।

यूडीटी बनाने के लिए:

CREATE TYPE IntegerList As Table
(
    IntValue int
)

इसे संग्रहीत कार्यविधि पैरामीटर सूची में घोषित करने के लिए:

CREATE PROCEDURE procedureName
(
   @IntList dbo.IntegerList READONLY
   -- Note that the readonly must be a part of the parameter declaration.
)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2005 पर वर्ष-महीने पंक्तियों में विभाजित दिनांक सीमा

  2. क्या टेबल कॉलम समान होने पर EXCEPT जॉइन से तेज़ी से निष्पादित होता है?

  3. आप पायथन में संग्रहीत प्रक्रिया से आउटपुट पैरामीटर कैसे प्राप्त करते हैं?

  4. SQL सर्वर में **बेयर** टेबल बनाएं और PROC स्टेटमेंट बनाएं

  5. क्या एक टेबल नाम को एक संग्रहित प्रो में पास करना और निष्पादन फ़ंक्शन के बिना इसका उपयोग करना संभव है?