2013-11-25 39 views
0

我試圖將列設置爲0.00,如果它是NULL,或者計算的值(如果它不爲null)。如果爲空或計算值,則將列更新設置爲0.00

在下表中,最高得分可能並不總是被設置,並且perCent col有時最終會顯示NULL,這在前端顯示中看起來很奇怪。

我正在嘗試下面的SQL,它不會拋出任何錯誤,也不工作,這意味着什麼是錯誤的。

我該如何設置這個權利?

"studentId" "maxScore" "studentScore" "stdPerCent" 
"1"   "100"  "25"   "25.00" 
"2"   "0"   "0"    NULL 

的Sql

update scores SET stdPerCent = if(NULL,'0.00',TRUNCATE(100*studentScore/maxScore,2)); 
+0

爲什麼要存儲計算? – Kermit

+0

@FreshPrinceOfSO所以我不必再次計算顯示。 – jmenezes

+0

只要你100%確定計算的字段永遠不會改變。 – Kermit

回答

2

我發現COALESCE更容易使用(和閱讀)比的情況下:

UPDATE scores 
SET stdPerCent = COALESCE(TRUNCATE(100*studentScore/maxScore,2), '0.00') 

編輯:如果你只是在嘗試t o填充NULL字段,並且知道非NULL字段已經正確計算,這會更有意義:

UPDATE scores 
SET stdPerCent = '0.00' 
WHERE stdPerCent IS NULL 
+0

你說得對。我不想檢查表值是否爲空。我會在插入之前檢查sql中的計算值是否爲空。 – jmenezes

+0

@jmenezes在這種情況下,COALESCE就是你想要的。該函數返回列表中的第一個非NULL值。它也可以用在你的初始更新/插入語句中。 – Sam

相關問題