如何将默认值分配给空列

时间:2015-04-29 08:47:23

标签: sql oracle11g

我正在处理报告构建器6i。

我有两张桌子

1- Company_info

2- Address_info

Comp_addr_code是company_info表中的外键,它是主键 Address_info table.Now我正在从comp_address_Code.but上的address_table中检索数据,在某些情况下,在Address_info表中前三列是空的。

我想要这些专栏' X'应该显示。我应该在我的SQL语句中进行哪些更改。我的Sql语句是:

SELECT COMP_CODE, COMP_NAME, COMP_ADDR_CODE,
FROM COMPANY_INFO, ADDRESS_INFO
WHERE COMP_CODE=:P_COMP_CODE
      AND COMP_ADDR_CODE=ADDR_CODE

2 个答案:

答案 0 :(得分:0)

使用COALESCE,它会选择第一个非空值。即如果列值不为null,则返回列值,否则返回指定的默认值:

select coalesce(COMP_CODE,'X'),
       coalesce(COMP_NAME,'X'),
etc

答案 1 :(得分:0)

如上所述,只有COMP_NAME可以为NULL;如果COMP_CODE或COMP_ADDR_CODE为空,那些行将不在结果集中。

NVL或COALESCE通常用于将空值替换为其他值,例如

SELECT 
COMP_CODE,
nvl(COMP_NAME, 'X')
COMP_ADDR_CODE
FROM COMPANY_INFO,ADDRESS_INFO
WHERE COMP_CODE=:P_COMP_CODE
AND
COMP_ADDR_CODE=ADDR_CODE