Pgsql 里面 COALESCE的用法


有這種要求,更新自己本身的字段的某個值進行加或者減,

常規方法:

UPDATE
    tbl_kintai_print_his
SET
    print_time = now(),
    print_emp_cd = '000000',
    times  = (select times from tbl_kintai_print_his where    kokyaku_cd   = '000002' AND
    sagyo_ymd    = '2015-01-30' )
+ 1,
    pattern = '055' ,
    ko_item_1 = 'no.0' ,
    ko_item_2 = 'no.2' ,
    ko_item_3 = 'no.3' ,
    ko_item_4 = 'no.4' ,
    ko_item_5 = 'no.5'
WHERE
    kokyaku_cd   = '000002' AND
    sagyo_ymd    = '2015-01-30'

 能實現,不過效率肯定不高,要進行查詢兩次

pgsql里面提供一個函數能完成這個操作:

UPDATE
    tbl_kintai_print_his
SET
    print_time = now(),
    print_emp_cd = '000000',
    times  = COALESCE (SUM(times),0)+ 1,
    pattern = '055' ,
    ko_item_1 = 'no.0' ,
    ko_item_2 = 'no.2' ,
    ko_item_3 = 'no.3' ,
    ko_item_4 = 'no.4' ,
    ko_item_5 = 'no.5'
WHERE
    kokyaku_cd   = '000002' AND
    sagyo_ymd    = '2015-01-30'

 能直接取到上一次的結果進行添加

 

二:還有一種用法就是在幾個字段中取值,從前往后,一直取到不為NULL的值為止。

 

 select id , name ,coalesce(Ph_no,Alt_no,Office_no) as contact number from employee 

我們可以通過這樣的語句,來得到Ph_no,Alt_no,Office_no這幾個字段中,第一個不存在null的數值,上面的語句得到

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM