我正試圖解決以下代碼中出現的此錯誤消息「將數據類型varchar轉換爲float時出錯」。我嘗試了很多方法,第一條線已經奏效。我認爲問題是表中有一個NULL。此次數據類型爲float
。將數據類型varchar轉換爲float case case語句時出錯
SELECT
'May' as Month_Name -- have this for all table months that I pull data from.
, SUM(
CASE
WHEN [All Gaps Mar] = '-' THEN 0
ELSE [All Gaps Mar]
END
) AS AllGapsFeb -- works with Integer on column in other tables
, SUM(
CASE
WHEN coalesce([All Gaps Mar], 0) = '-' THEN 0
ELSE [All Gaps Mar]
END
) AS AllGapsMarch
下面是其他企圖得到它從我發現SO和互聯網工作,但我得到了同樣的錯誤:
, SUM(
CASE
WHEN [All Gaps Mar] = '-' THEN convert(integer, [All Gaps Mar])
ELSE ([All Gaps Mar])
END
) AS AllGapsMarch
, SUM(
CASE
WHEN [All Gaps Mar] = '-' THEN 0
ELSE convert(integer, [All Gaps Mar])
END
) AS AllGapsMarch
, CASE
WHEN [All Gaps Mar] = '-'
THEN ISNUMERIC(convert(integer, Sum([All Gaps Mar])))
ELSE 0
END AS numeric_count
,你爲什麼和0做coalese並用字符串比較結果? – 2014-09-03 18:02:41
你可以檢查你的專欄以外的任何非數字值嗎?只要列中的字母字符不能變成數字,就可能發生錯誤。 – Vulcronos 2014-09-03 18:04:28
這是什麼意思:「 - <在其他表中的列上使用整數」?嘗試刪除SUM()並查看您嘗試進行SUM操作的數據。有沒有不是數字或NULL的行? – 2014-09-03 18:04:55