今天使用聚合函數的時候 發現 varchar類型的是不可用的,所以呢就開始想辦法解決
用到了轉換函數cast(s.score as bigint) 然后有一個問題就是如果數據為空的話就會發生轉換錯誤。這個時候又需要用到另一個函數判斷是否為空。
COALESCE(s.score, '0') 這個函數是用來判斷是否為空的。 coalesce前面的參數是所在的列,后面的參數是所在列如果為空的話那么就轉換為后一個參數
因為是字符串類型 所以 0必須加上'' ,這樣才不會類型轉換錯誤。 另外就是數據庫的內容需要是(null) 這樣才不會報錯 。。如果是直接空的話會報錯。這個問題我也不了解是為啥了。。。下次遇到好好找找問題原因!最終sql就暫時這么寫了 。用就是這么用的。
select avg(cast(COALESCE(s.score, '0') as bigint)) from student s
