1

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

select max(invoice_number)  from invoice;

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

4

3 回答 3

5

使用 NVL:

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

使用 ANSI COALESCE:

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

使用解码:

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

使用 ANSI 案例:

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

判决

所有的工作,我可能会使用 NVL,因为 COALESCE 是 ANSI,但不一定能像原生替代品一样快。

于 2012-05-25T04:43:16.577 回答
1

您可以使用 COALESCE 例如:

select COALESCE(max(invoice_number),'0') from invoice;
于 2012-05-25T04:34:35.597 回答
1
select coalesce(max(invoice_number),0)

也可以使用解码。

select decode(max(invoice_number),null, 0)
于 2012-05-25T04:35:33.893 回答