2
我有一個oracle解碼器,它在更新小數精度之前檢查值是否爲NULL。問題是,當price_precision列中的值不爲空時,解碼仍會轉到d.price值,但應該轉到默認值。下面是代碼解碼行:Oracle DECODE不工作
DECODE(d.PRICE_PRECISION, NULL, d.price,TO_CHAR(DECODE(d.price,NULL, '', d.price), CONCAT('9999990',RPAD('D', d.PRICE_PRECISION+1,'9')))) price
我知道的一個事實存在的價格_Precision列的非NULL數據,因爲我可以在返回的select語句看到它。我的解碼器有問題嗎?任何想法爲什麼解碼不會去默認語句?
什麼數據類型是d.price? 'WITH D AS(SELECT 10 AS PRICE_PRECISION,'2'as dual from UNION ALL SELECT NULL AS PRICE_PRECISION,'3'as Price from dual) 選擇DECODE(d.PRICE_PRECISION,NULL,d.price, TO_CHAR DECODE(d.price,NULL,'',d.price),CONCAT('9999990',RPAD('D',d.PRICE_PRECISION + 1,'9'))))價格 from d;'似乎工作如果d.price是varchar2數據。 – xQbert