从ORACLE中的VARCHAR2中删除NULL

Bis*_*han 1 sql oracle oracle11g

VARCHAR2我的数据库表中有一个用于存储的类型列invoice_number.并且有一个查询来获得最大值invoice_number,如下所示.

select max(invoice_number)  from invoice;
Run Code Online (Sandbox Code Playgroud)

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

OMG*_*ies 5

使用NVL:

SELECT NVL(MAX(invoice_number), '0')
Run Code Online (Sandbox Code Playgroud)

使用ANSI COALESCE:

SELECT COALESCE(MAX(invoice_number), '0')
Run Code Online (Sandbox Code Playgroud)

使用DECODE:

SELECT DECODE(MAX(invoice_number), NULL, '0')   
Run Code Online (Sandbox Code Playgroud)

使用ANSI CASE:

SELECT CASE 
         WHEN MAX(invoice_number) IS NULL THEN '0' 
         ELSE MAX(invoice_number) 
       END
Run Code Online (Sandbox Code Playgroud)

判决书

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