在LEFT JOIN oracle中使用NVL?

时间:2019-02-21 03:39:08

标签: sql oracle

我有2张桌子:

Table A:      TableB:
ID            ID    Value
1             2     0.5
2             3     10
3

我的查询:

SELECT A.ID,B.VALUE FROM A LEFT JOIN B ON A.ID = B.ID;

结果:

ID    Value
1      
2     0.5
3     10

我想用'-'替换空值,并尝试使用NVL(B.VALUE,'-'),但这不起作用,所以我该怎么办?

1 个答案:

答案 0 :(得分:5)

“不起作用”对您的问题不是很有帮助的描述。我的猜测是您收到“ ORA-01722:无效数字”,因为NVL( B.value, '-' )会尝试将第二个参数强制转换为与第一个参数相同的数据类型,而不能将“-”强制转换为数字。但是,如果将第一个参数包装在TO_CHAR中,它将起作用,如下所示:

SELECT A.ID, NVL( TO_CHAR( B.VALUE ), '-' ) FROM TableA A LEFT JOIN TableB B ON A.ID = B.ID;

SQL Fiddle示例