1

VARCHAR2データベース テーブルに storeの type 列があります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 CASE の使用:

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

評決

COALESCE は ANSI ですが、必ずしもネイティブの代替手段と同じくらい高速に動作するとは知られていないため、すべて動作します。おそらく NVL を使用します。

于 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 に答える