我的数据库表中有一个VARCHAR2
类型的列用于商店invoice_number
。并且有一个查询可以获得最大invoice_number
,如下所示。
select max(invoice_number) from invoice;
但invoice
表中没有数据,查询返回值为null
。但在这种情况下,我需要将此值替换为0
而不是null
。我怎么能这样做?
答案 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)