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

SQL सर्वर IF बनाम IIF ():क्या अंतर है?

नई प्रोग्रामिंग भाषा सीखने वाले छात्र अक्सर अपना पहला पाठ IF . से शुरू करते हैं स्टेटमेंट, जहां उनका स्टेटमेंट केवल तभी वैल्यू लौटाएगा जब एक्सप्रेशन सही हो।

फिर वे एक IF... ELSE . पर आगे बढ़ सकते हैं बयान, जहां वे अभिव्यक्ति के गलत होने पर वापस जाने के लिए एक और मूल्य निर्धारित कर सकते हैं। इसलिए, अगर एक्सप्रेशन सही है, तो एक मान लौटाएं और अगर गलत है तो दूसरा मान लौटाएं।

SQL सर्वर में निश्चित रूप से शामिल है IF... ELSE इसके टी-एसक्यूएल टूलबॉक्स में स्टेटमेंट।

SQL सर्वर में IIF() . भी शामिल है फ़ंक्शन, जो समान कार्य करता है, लेकिन अधिक संक्षिप्त सिंटैक्स के साथ।

लेकिन कुछ सूक्ष्म अंतर हैं।

मतभेद

निम्न तालिका IF . के बीच मुख्य अंतरों को रेखांकित करती है स्टेटमेंट और IIF() समारोह।

IF IIF()
टाइप करें फ्लो कंट्रोल स्टेटमेंट। तार्किक कार्य।
परिणाम कैसे निर्धारित किया जाता है? आप निष्पादित करने के लिए SQL कथन या कथन ब्लॉक निर्दिष्ट करते हैं। आप लौटने के लिए वास्तविक मान निर्दिष्ट करते हैं।
नेस्टिंग? नेस्टेड स्तरों की संख्या की सीमा उपलब्ध स्मृति पर निर्भर करती है। केवल 10 के अधिकतम स्तर तक नेस्ट किया जा सकता है।
क्या होगा यदि व्यंजक असत्य लौटाता है? ELSE कीवर्ड वैकल्पिक है (यानी आप चुन सकते हैं कि झूठे परिणामों को पूरा करना है या नहीं)। एक सही और गलत दोनों मान की आवश्यकता होती है (यानी आपको झूठे परिणामों को पूरा करना होगा)।

IIF() फंक्शन वास्तव में CASE . लिखने का एक शॉर्टहैंड तरीका है अभिव्यक्ति। इसलिए यह CASE . जैसी ही सीमाएँ साझा करता है एक्सप्रेशन, जो IF . से भिन्न हैं बयान।

आईएफ स्टेटमेंट

यह रहा एक IF बयान।

IF 1 < 2 SELECT 'True';

परिणाम:

True

इस मामले में, मूल्यांकन करने के लिए अभिव्यक्ति 1 < 2 . है . यह सच है कि 1 2 से छोटा है इसलिए SELECT कथन चलाया गया और True लौटा दिया गया।

हालाँकि, यदि व्यंजक असत्य है, तो कुछ नहीं होगा।

IF 1 > 2 SELECT 'True';

परिणाम:

Commands completed successfully.

सभी SQL सर्वर ने मुझे बताया कि आदेश सफलतापूर्वक पूरा हुआ। और कुछ नहीं लौटाया गया, क्योंकि कुछ और निर्दिष्ट नहीं किया गया था।

IF… ELSE स्टेटमेंट

इस मामले में, हम वैकल्पिक ELSE . जोड़ सकते हैं करने के लिए IF कथन, ताकि यह एक IF... ELSE . बन जाए बयान।

IF 1 > 2
       SELECT 'True';
ELSE 
       SELECT 'False';

परिणाम:

False

अब हमें एक परिणाम भी मिलता है जब व्यंजक असत्य होता है।

आईआईएफ() फ़ंक्शन

IIF() फ़ंक्शन हमें अधिक संक्षिप्त सिंटैक्स का उपयोग करके समान तर्क लिखने की अनुमति देता है।

इसलिए हम पिछले उदाहरण को निम्नलिखित में फिर से लिख सकते हैं:

SELECT IIF( 1 > 2, 'True', 'False' );

परिणाम:

False

IIF() फ़ंक्शन मूल रूप से IF... ELSE . करने का एक अधिक संक्षिप्त तरीका है बयान।

दरअसल, यह केवल आंशिक रूप से सच है। जैसा कि बताया गया है, IIF() फ़ंक्शन CASE . पर आधारित है अभिव्यक्ति, और इसलिए CASE . की समान सीमाएं हैं अभिव्यक्ति (जैसे कि केवल 10 के अधिकतम स्तर तक घोंसला बनाने में सक्षम होना)।

इसलिए, पिछला कथन निम्नलिखित के समतुल्य है।

SELECT 
  CASE WHEN 1 > 2 THEN 'True'
    ELSE 'False'
  END;

परिणाम:

False

ध्यान दें कि IIF() दो तर्कों की आवश्यकता है, और इसलिए, यदि अभिव्यक्ति का परिणाम गलत है (भले ही आप NULL निर्दिष्ट करते हैं, तो आपको वापस जाने के लिए एक मान निर्दिष्ट करना होगा। या एक खाली स्ट्रिंग)।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HP-UX इटेनियम को SQL सर्वर से कनेक्ट करें

  2. टी-एसक्यूएल - निर्धारित करें कि क्या मान पूर्णांक है

  3. SQL सर्वर कब रिवाइंड करता है?

  4. SQL सर्वर में SA खाते का नाम बदलें (T-SQL उदाहरण)

  5. एसक्यूएल सर्वर यूनियन लेकिन ऑर्डर रखें