- यदि आप
SELECT -100/-100*10
परिणाम निष्पादित करते हैं0
। - यदि आप
SELECT (-100/-100)*10
परिणाम निष्पादित करते हैं10
। - यदि आप
SELECT -100/(-100*10)
परिणाम निष्पादित करते हैं0
। - यदि आप
SELECT 100/100*10
परिणाम निष्पादित करते हैं10
।
बोल राज्यों:
जब एक अभिव्यक्ति में दो ऑपरेटरों का एक ही ऑपरेटर पूर्वता स्तर होता है, तो उन्हें अभिव्यक्ति में उनकी स्थिति के आधार पर बाएं से दाएं मूल्यांकन किया जाता है।
तथा
Level Operators
1 ~ (Bitwise NOT)
2 * (Multiplication), / (Division), % (Modulus)
3 + (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
BOL गलत है, या मैं कुछ याद कर रहा हूँ? ऐसा लगता -
है कि (अपेक्षित) पूर्वता को फेंक रहा है।
-
यह प्रवाह "गलत" होने का कारण बनता है। यदि आप कोशिश -100/(-100)*10
करते हैं तो आपको परिणाम मिलता है 10
। ऐसा लगता है कि समीकरण में /
मूल्य के खिलाफ लागू किया जा रहा -
है और फिर समीकरण 100*10
निर्धारित किया जा रहा है। मुझे यकीन नहीं है कि यह BOL के साथ एक त्रुटि है, लेकिन अधिक है कि SQL सर्वर अपेक्षित रूप से व्यवहार नहीं कर रहा है। यह sql-docs पर एक मुद्दा उठाने और देखने के लायक हो सकता है कि उनकी प्रतिक्रिया क्या है; शायद "सुविधा" की सलाह देने वाले दस्तावेज़ में एक नोट जोड़ा जा सकता है।
SELECT -100/(-100)*10
यह भी लौटाता है। 10. ऐसा लगता -
है कि -
ऑपरेटर के रूप में व्यवहार किया जाता है जिसे 100*10
गणना करने के बाद ही लागू किया जाना चाहिए
A / -B * C
है A <div> <negate> B <multiply> C
। डॉक्स की तुलना में नेगेट की मिसाल कम है, इसलिए इसका परिणाम है A / -(B * C)
। आप अस्थायी स्थिरांक का उपयोग करके इसे और अधिक स्पष्ट रूप से देख सकते हैं: 12e / -13e * 14e
बनाम 12e / (-13e) * 14e
बनाम 12e / 13e * 14e
। इसका कारण यह है कि हमें फेंकता है क्योंकि हम आम तौर पर अनैतिक माइनस से शाब्दिक का हिस्सा बनने की उम्मीद करते हैं, या कम से कम बहुत अधिक पूर्वता है, लेकिन यह नहीं है कि टी-एसक्यूएल कैसे काम करता है।