从ORACLE中的VARCHAR2中删除NULL

时间:2012-05-25 04:31:58

标签: sql oracle oracle11g

我的数据库表中有一个VARCHAR2类型的列用于商店invoice_number。并且有一个查询可以获得最大invoice_number,如下所示。

select max(invoice_number)  from invoice;

invoice表中没有数据,查询返回值为null。但在这种情况下,我需要将此值替换为0而不是null。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

使用NVL:

SELECT NVL(MAX(invoice_number), '0')

使用ANSI COALESCE:

SELECT COALESCE(MAX(invoice_number), '0')

使用DECODE:

SELECT DECODE(MAX(invoice_number), NULL, '0')   

使用ANSI CASE:

SELECT CASE 
         WHEN MAX(invoice_number) IS NULL THEN '0' 
         ELSE MAX(invoice_number) 
       END

判决

所有的工作,我可能会使用NVL,因为COALESCE是ANSI但不知道它必须像本机替代品一样快。

答案 1 :(得分:1)

您可以使用COALESCE 例如:

select COALESCE(max(invoice_number),'0') from invoice;

答案 2 :(得分:1)

select coalesce(max(invoice_number),0)

也可以使用Decode。

select decode(max(invoice_number),null, 0)