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

WHERE क्लॉज में कई शर्तें

आप कुछ इस तरह इस्तेमाल कर सकते हैं:

select * 
from @Accessories 
where (@Param = 0)
  or (@Param = 1 and atype = 'HDD') 
--or (@Param = 1 and itype = 1) , if itype and atype are connected
  or (@Param = 2 and atype != 'HDD')
option (recompile)

अगर परम 0 है तो पहली शर्त हो जाती है 0=0 और सभी पंक्तियों के लिए मेल खाता है, इसलिए सभी पंक्तियों को वापस कर दिया जाता है। यदि परम 1 या 2 है, तो केवल संबंधित या शाखा पहली शर्त से मेल खाती है, इसलिए यह वही लौटाता है जो दूसरी शर्त निर्दिष्ट करती है।

साथ ही, option (recompile) वास्तव में महत्वपूर्ण है (मार्टिन की टिप्पणी में लेख देखें)। यह SQL सर्वर को निष्पादन योजना तैयार करते समय पैरामीटर के रनटाइम मानों का उपयोग करने का निर्देश देता है, इसलिए मूल रूप से:

  • जब @परम =0 क्वेरी बन जाती है select * from @Accessories
  • जब @परम =1 क्वेरी बन जाती है select * from @Accessories where atype = 'HDD'
  • जब @परम =2 क्वेरी बन जाती है select * from @Accessories where atype != 'HDD'


  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 सर्वर (SSMS) में डेटाबेस के संगतता स्तर की जाँच करें/बदलें

  4. SQL सर्वर:क्वेरी को .txt फ़ाइल के रूप में निर्यात करें

  5. लिंक में क्रॉस लागू करें