SQL सर्वर IIF बनाम मामला


87

मुझे हाल ही IIFमें SQL Server 2012 में फ़ंक्शन की उपलब्धता के बारे में पता चला । मैं हमेशा CASEअपने प्रश्नों में नेस्टेड का उपयोग करता हूं। मैं का सही उद्देश्य जानना चाहता हूँ IIFबयान और जब चाहिए हम उपयोग करने को प्राथमिकता IIFसे अधिक CASEक्वेरी में वक्तव्य। मैं ज्यादातर CASEअपने प्रश्नों में नेस्टेड का उपयोग करता हूं।

सभी इनपुट्स के लिए धन्यवाद।


9
IIF एक साधारण CASE स्टेटमेंट के लिए एक शॉर्टहैंड है। इसे क्वेरी ऑप्टिमाइज़ेशन और निष्पादन के लिए केस स्टेटमेंट में भी अनुवादित किया गया है: Technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHan

यह शर्म की बात है कि शॉर्टहैंड मानक का हिस्सा नहीं है (यह इन दिनों क्या है? ANSISQL?) क्योंकि यह पढ़ना बहुत आसान है। लेकिन तब टी-एसक्यूएल हमेशा एक सा रहा है ... "वर्डी"।
नील बार्नवेल

जवाबों:


144

IIFके रूप में ही है CASE WHEN <Condition> THEN <true part> ELSE <false part> END। क्वेरी प्लान समान होगा। यह शुरू में कार्यान्वित के रूप में, शायद, "कृत्रिम चीनी" है।

CASE सभी SQL प्लेटफार्मों पर पोर्टेबल है, जबकि IIF SQL SERVER 2012+ विशिष्ट है।


6
संभवतः सिंटैक्स को याद रखने के लिए एक्सेस / वीबी डेवलपर्स पर इसे आसान बनाना।
दिलचस्प-नाम-यहाँ

20

IIF एक गैर-मानक T-SQL फ़ंक्शन है। इसे SQL SERVER 2012 में जोड़ा गया था, ताकि हाथ से पहले IIF के CAS को रीफ़्रेश किए बिना SQL सर्वर पर पहुँच सके। एक बार Access db SQL सर्वर में पूरी तरह से माइग्रेट हो जाने के बाद, आप रिफ्लेक्टर कर सकते हैं।


13
मुझे आपका तर्क पसंद है। क्या आप कुछ प्रलेखन का हवाला देकर इसका समर्थन कर सकते हैं?
पीटर इवान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.