有一段時間我需要計算資料,但是有空欄位(null),如果某些欄位中沒有任何內容,我希望他跳過。告訴我怎么開,否則我會出錯
錯誤:除以零 SQL 狀態:22012
sql查詢:
UPDATE summary_all_filter_edit SET resul_power = (SELECT round((((all_plats_ok::numeric - all_plats_no::numeric) / all_plats_ok::numeric) * power::numeric), 2) from summary_all_filter_edit su where su.id=summary_all_filter_edit.id);
我的桌子:https ://dbfiddle.uk/cXyIdMBr
uj5u.com熱心網友回復:
您可以嘗試在WHERE子句中添加一個檢查,以防止在分母為零的情況下更新:
UPDATE summary_all_filter_edit
SET resul_power = (
SELECT round((((all_plats_ok::numeric - all_plats_no::numeric) /
all_plats_ok::numeric) * power::numeric), 2)
FROM summary_all_filter_edit su
WHERE su.id = summary_all_filter_edit.id AND
all_plats_ok::numeric != 0);
uj5u.com熱心網友回復:
每當我們需要使用除法運算子時,我發現使用NULLIF函式很有幫助,這樣它就不會給我一個除以 0 的錯誤。在您的查詢中,我們可以將 NULLIF 添加到分母,這樣除法的結果將為 NULL 而不是給您一個錯誤
UPDATE summary_all_filter_edit SET resul_power = (SELECT round((((all_plats_ok::numeric - all_plats_no::numeric) / NULLIF(all_plats_ok::numeric,0)) * power::numeric), 2) from summary_all_filter_edit su where su.id=summary_all_filter_edit.id AND all_plats_ok IS NOT NULL);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/514706.html
上一篇:無法從Java代碼連接到docker容器上的postgresql設定
下一篇:獲取每個用戶的最后一條記錄
