如何在SQL查詢存在NULL值時返回默認值

如何在SQL查詢存在NULL值時返回默認值

在SQL查詢(PostgreSQL)時候有時候會返回null值, 但我們程序裡面又不著null值的話, 如何在SQL中定義一個默認值呢, 讓本應該為NULL的時候返回該默認值. 直接在建表的時候指定該字段不可為null且指定默認值當然可以.

但還有其他情況結果中有null但我們不需要null的時候, 比如sum函數, 在沒有查詢結果的時候sum的返回值就是null

其實在psql中可以使用條件表達式(CASE,COALESCE,NULLIF,GREATEST,LEAST)來實現這個效果

CASE

CASE在psql官方文檔中這樣描述的

CASE WHEN 條件 THEN 結果
[WHEN ...]
[ELSE 結果]
END

比如要實現值為NULL時返回默認值

SELECT CASE WHEN 字段名 IS NULL THEN 默認值 ELSE 字段名 END
FROM 表名

COALESCE

COALESCE是一個函數, 返回輸入參數的第一個不為NULL的值

格式為:

COALESCE(值 [, ...])

要實現值為NULL時返回默認值

SELECT COALESCE(字段名,默認值) FROM 表名

NULLIF

NULLIF是一個函數, 接收兩個參數,並不是為NULL時返回默認值, 而是兩個參數相等時返回NULL

格式為:

NULLIF(值1, 值2)

比如若某個值為字符串’null’返回null值

SELECT NULLIF(字段名,'null') FROM 表名

GREATEST 和 LEAST

GREATEST 和 LEAST也都是函數, 可以接收多個參數

GREATEST 是返回值中的最大值, 如果值中存在null則認為null為最小值

LEAST 是返回值中的最小值,如果值中存在null則認為null為最大值

比如下面的語句結果為1:

SELECT LEAST(12, 1, 5, 2, 3, 67, NULL, 43)

下面的語句結果為67:

SELECT GREATEST(12, 1, 5, 2, 3, 67, NULL, 43)


分享到:


相關文章: