PostgreSQL空值null參與運算的處理方法
在數字加減乘除運算中遇到某個欄位值為空白值(null)的時候,輸出的結果往往會讓我們失望,得不到我們所期待的數值,可以通過 coalesce方式將凡是取值為null,即空值的欄位轉換成預設的值進行運算,從而改善運算效果。
coalesce函數用法: coalesce(欄位名,預設值),很簡單吧~
示範如下: [root@dbserver ~]# su - postgres -bash-3.2$ psql music psql (9.5beta2) 輸入 "help" 來擷取協助資訊. music=# create table test_null(id int,num1 int,num2 int); CREATE TABLE
插入資料,有的取值為正常數字,有的則為空白值null: music=# insert into test_null values(1,100,100); INSERT 0 1 music=# insert into test_null values(2,200,200); INSERT 0 1 music=# insert into test_null values(3,null,100); INSERT 0 1 music=# insert into test_null values(4,300,null); INSERT 0 1 music=# insert into test_null values(5,null,500); INSERT 0 1
查看一下表中的資料,發現null值的欄位全部為空白值: music=# select * from test_null; id | num1 | num2 ----+------+------ 1 | 100 | 100 2 | 200 | 200 3 | | 100 4 | 300 | 5 | | 500 (5 行記錄)
直接運算查看結果,會發現凡是遇到空值的運算結果均為空白: music=# select num1+num2 from test_null; ?column? ---------- 200 400 (5 行記錄)
使用 coalesce函數之後便可處理null的問題: music=# select coalesce(num1,0)+coalesce(num2,0) from test_null; ?column? ---------- 200 400 100 300 500 (5 行記錄)
在這裡,coalesce設定的預設值為0,同樣也可以設定為其他的數值,比如人體體溫可以設定預設值為36,冰點為0,沸點為100等。