我需要計算存儲在字符串中的數學表達式的結果(例如:'A*(B+C)+(D*E)+F+G*(H+I)'
)。 該字符串可以包含任何數學運算符。以數學字符串計算NULL值而不用0替換它們PL/SQL
我的程序(一個PL/SQL程序)的第一步是與他們的價值觀來取代變量(可以是NULL
)
但是,因爲我需要我不能用零替換NULL
值區分總結果是NULL還是0
。
示例#1:
我期望有NULL作爲結果,而不是0。
NULL*(B+C)+(NULL*10)+NULL+5*(NULL+NULL)
例#3:
我期望有0作爲結果
NULL*(B+C)+(NULL*10)+0+5*(NULL+NULL)
示例2:
我希望有99作爲結果
NULL*(B+C)+(NULL*10)+99+5*(NULL+NULL)
有沒有辦法動態地做到這一點?數學表達式可以是任何其他類型('A*B+C*D+E*G'
或'A*(B+C)+D*(E+F)'
或簡單的A*B
或A+B+C
)。
如果沒有括號,數學運算符的優先級必須像在標準計算中一樣受到尊重。
替換所有值並從NULL值中清除表達式後,我使用execute immediate來計算最終結果。
感謝您的幫助!
您的需求呢沒有道理。 NULL + NULL結果爲NULL,但0 + NULL結果爲0,但10 * NULL結果爲NULL?用所有可能的操作符的NULL和非NULL值處理的完整定義更新你的問題。 – nop77svk
如果我的意見裏面有一個NULL值,幾乎每次結果都必須爲NULL,除了所有的NULL都在方括號中,如(...)* 0 - > 0或(...)^ 0 - > 1. Fe在你的例子中#3:如果第一個NULL代表,我不知道,但可以是5百萬,那麼結果是0 + 5 000 000 *(A + B)(... + 10倍的任何和5倍的其他任何) - >隱含你用0代替所有NULL – am2
也許你可以做到以下幾點:用隨機值替換所有NULL兩次並比較結果。如果兩個結果都是相同的,你可以希望,NULL不起任何作用,但是當然你可以找到其中的一種組合,它給了你一個假的朋友。 – am2