Sql 如何为空列指定默认值

Sql 如何为空列指定默认值,sql,oracle11g,Sql,Oracle11g,我正在开发报表生成器6i 我有两张桌子 1-公司信息 2-地址信息 Comp_addr_code是company_info表中的外键,它是中的主键 地址信息表。现在我正在根据公司地址代码从地址表中检索数据。但在某些情况下,地址信息表中的前三列是空的 我希望显示这些列的“X”。我应该在SQL语句中进行哪些更改。我的SQL语句是: SELECT COMP_CODE, COMP_NAME, COMP_ADDR_CODE, FROM COMPANY_INFO, ADDRESS_INFO WHERE CO

我正在开发报表生成器6i

我有两张桌子

1-公司信息

2-地址信息

Comp_addr_code是company_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

使用
合并
,它将拾取第一个非空值。即,如果列值不为空,则返回列值,否则返回指定的默认值:

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

如前所述,只有COMP_NAME可以为空;如果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