參考博客
https://www.cnblogs.com/xielong/p/9285147.html
SELECT 0 AS t1 , 1 AS t2, 1.123456 AS t3, NULL AS t4, round((1234.123456- null )*100/nvl(0.1,1),2) t5, nvl(round((1234.123456 - 0 )*100/nullif(10,1),2), 1.123456) t6 , CAST (nvl(round((1234.123456 - 0 )*100/nullif(10,1),2), 1.123456) AS NUMBER(9,2)) t7, --NVL(expr1,expr2),若expr1爲null, 返回expr2; 不爲null,返回expr1。 注意:兩者類型要一致 nvl(null, 0.1234) AS t8, --NVL2 (expr1, expr2, expr3),若expr1不爲NULL,返回expr2 ;爲NULL,返回expr3。注意:expr2 和expr3 類型不同的話,expr3 會轉換爲expr2 的類型 nvl2(0,1,2) AS t10, --NULL .NULLIF (expr1, expr2),若expr1和expr2相等,返回NULL;不相等,等返回expr1 nullif(1.123,1.123) AS t9 FROM upcenter.stk_basic_info WHERE rownum<=10;
--NVL(expr1,expr2),若expr1爲null, 返回expr2; 不爲null,返回expr1。 注意:兩者類型要一致
nvl(null, 0.1234) AS t8,
--NVL2 (expr1, expr2, expr3),若expr1不爲NULL,返回expr2 ;爲NULL,返回expr3。注意:expr2 和expr3 類型不同的話,expr3 會轉換爲expr2 的類型
nvl2(0,1,2) AS t10,
--NULL .NULLIF (expr1, expr2),若expr1和expr2相等,返回NULL;不相等,等返回expr1
nullif(1.123,1.123) AS t9
這裏T6返回的類型是Number(38,0) 但是結果卻打印的是浮點數。oracle 此處返回的數據類型是不可靠的。
所以,遇到這種數據類型不可靠的情況,需要強制指定 數據類型。
使用 cast as