将Varchar转换为货币

时间:2015-08-27 12:35:00

标签: sql-server sql-server-2008 money-format

我正在尝试将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

2 个答案:

答案 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