我正在尝试将varchar
列转换为金钱,但我一直收到此错误
不允许从数据类型varchar到money的隐式转换。使用CONVERT函数运行此查询。
我没有像错误建议那样使用转换函数吗?
Select
tellerID,
SUM(CASE
WHEN CONVERT(money, value1) IS NULL THEN '0'
ELSE CONVERT(money, value1)
END) AS [Total Value 1]
From
intakedrawer
Group By
tellerID
Order By
tellerID
答案 0 :(得分:4)
试试这样:
Select
tellerID,
SUM(CASE WHEN IsNumeric(value1) = 0 THEN 0
ELSE CAST(value1 AS decimal(18, 2))
END) as [Total Value 1]
From intakedrawer
Group By tellerID
Order By tellerID
答案 1 :(得分:2)
如果您使用的是SQL Server 2012或更高版本,则还可以使用TRY_CONVERT
。如果转换不起作用,则返回NULL。
SELECT
tellerid,
SUM(TRY_CONVERT(MONEY, value1)) AS [Total Value 1]
FROM intakedrawer
GROUP BY tellerid
ORDER BY tellerid;
有一个SQL小提琴here。