我的数据库表中有一个VARCHAR2
类型列用于 store invoice_number
。并且有一个查询来获取最大值invoice_number
,如下所示。
select max(invoice_number) from invoice;
但invoice
表中没有数据,以上查询返回值为null
. 但在这种情况下,我需要将此值替换为0
而不是null
. 我怎么能这样做?
使用 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,但不一定能像原生替代品一样快。
您可以使用 COALESCE 例如:
select COALESCE(max(invoice_number),'0') from invoice;
select coalesce(max(invoice_number),0)
也可以使用解码。
select decode(max(invoice_number),null, 0)