मैं मान रहा हूँ कि qty
varchar2
. के रूप में परिभाषित किया गया है my_table
. में -- अन्यथा, to_number
. पर कॉल करने से कोई उद्देश्य पूरा नहीं होगा . यदि वह धारणा सही है, तो मैं दांव लगाऊंगा कि तालिका में कुछ अन्य पंक्ति है जहां qty
इसमें गैर-संख्यात्मक डेटा है।
एसक्यूएल एक सेट-आधारित भाषा है इसलिए ओरेकल (या कोई अन्य डेटाबेस) चीजों का मूल्यांकन करने के लिए पूरी तरह से स्वतंत्र है, जिस क्रम में वह फिट दिखता है। इसका मतलब है कि Oracle to_number(qty)
. का मूल्यांकन करने के लिए पूरी तरह से स्वतंत्र है id=12345
. लागू करने से पहले अभिव्यक्ति विधेय यदि Oracle को एक ऐसी पंक्ति का सामना करना पड़ता है जहां qty
मान को किसी संख्या में परिवर्तित नहीं किया जा सकता है, यह एक त्रुटि देगा।
यह भी संभव है कि उस विशेष पंक्ति में कुछ गैर-संख्यात्मक डेटा हो जहां id = 12345
जो प्रदर्शित नहीं होता है (उदाहरण के लिए नियंत्रण वर्ण)। आप इसे क्वेरी चलाकर देख सकते हैं
SELECT dump(qty, 1016)
FROM my_table
WHERE id = 12345
(यदि आप हेक्साडेसिमल के बजाय दशमलव चाहते हैं, तो dump
के दूसरे पैरामीटर के रूप में 1010 का उपयोग करें ) और यह देखने के लिए जांच कर रहा है कि डेटा में कुछ अप्रत्याशित तो नहीं है।