在LEFT JOIN oracle中使用NVL?

Jim*_*myN 0 sql oracle

我有2张桌子:

Table A:      TableB:
ID            ID    Value
1             2     0.5
2             3     10
3
Run Code Online (Sandbox Code Playgroud)

我的查询:

SELECT A.ID,B.VALUE FROM A LEFT JOIN B ON A.ID = B.ID;
Run Code Online (Sandbox Code Playgroud)

结果:

ID    Value
1      
2     0.5
3     10
Run Code Online (Sandbox Code Playgroud)

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

eao*_*son 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;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴示例