3

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

2 回答 2

5

试试这样:

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
于 2015-08-27T12:38:14.187 回答
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 Fiddle 。

于 2015-08-27T12:43:29.553 回答