sql 中對varchar類型進行求和(sum)方法

最近修改代碼bug時候,發現sql報錯,最後找到原因是直接對varchar型數據進行求和,最終修改方案確定需要進行數據類型轉換。

這裏使用的CAST方法對數據類型進行轉換的。

最終的數據爲下面這樣:

select SUM(cast(changeData as numeric(12,0))) from testTable where departmentID='REACH & DEVELOPMENT';

以上的changeData字段就是那個varchar的字段

但其實當時是連表查詢,第一張表中數據庫中的varchar還有一部分爲'',所以最終實際做法是先臨時子表中進行數據轉化,然後再外部進行求和,類似以下做法:

SELECT 

department.departmentID  departmentID, 

department.departmentName  departmentName,

sum(offerData.changeData)   changeData

FROM  department ,

( SELECT 

CASE WHEN changeTable.changeData = '' THEN 0

ELSE CAST(changeTable.changeData AS numeric(12,0))

END AS changeData,

switchTable.ID AS departmentID

FROM 

changeTable,switchTable 

WHERE

changeTable.ID = switchTable.changeID) AS offerData

WHERE offerData.departmentID = department.departmentID;

通過SQL語句case when先處理數據爲''的情況,然後再進行求和,就避免了錯誤了。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章