इसका उत्तर हाँ है।
यहाँ एक परीक्षण है, इस तथ्य को साबित करने के लिए @variables का उपयोग करते हुए:
SET @var:=5;
SELECT IF(1 = 0, (@var:[email protected] + 1), @var ); -- using ':=' operator to modify 'true' expr @var
SELECT IF(1 = 1, @var, (@var:[email protected] + 1) ); -- using ':=' operator to modify 'false' expr @var
SELECT @var;
परिणाम तीनों SELECT क्वेरी में से '5' है।
यदि IF() फ़ंक्शन शॉर्ट सर्किट नहीं होता, तो परिणाम SELECT #1 से '5', और SELECT #2 से '6' और अंतिम "select @var" से '7' होता।
ऐसा इसलिए है क्योंकि 'सत्य' एक्सप्रेशन को कभी भी सिलेक्ट # 1 में निष्पादित नहीं किया जाता है और न ही # 2 को चुनने के लिए गलत एक्सप्रेशन निष्पादित किया जाता है।
ध्यान दें कि ':=' ऑपरेटर का उपयोग SQL क्वेरी के भीतर @var को संशोधित करने के लिए किया जाता है (चुनें, से, और जहां खंड)। आप इससे कुछ वाकई फैंसी/जटिल एसक्यूएल प्राप्त कर सकते हैं। मैंने SQL क्वेरी में 'प्रक्रियात्मक' तर्क लागू करने के लिए @vars का उपयोग किया है।
-- जे जोर्गेनसन --