我有包含NULL的字段数据。我尝试通过将NULL数据设为0.00来获取SUM数据。
我用
从t
中选择Sum(cast(ISNULL(金额,0)作为金钱))
这里是demo
如何避免此错误 “无法将char值转换为money.char值的语法不正确”
答案 0 :(得分:5)
您的NULL
不是空值,而是带有' NULL'在其中:
根据演示版将其更改为真实NULL
时,这将在没有ISNULL()
的情况下生效,因为聚合忽略了NULL
值:
SELECT SUM(CAST(amount as MONEY))
FROM t
如果您需要解决该字符串值,请使用REPLACE()
代替ISNULL()
:
SELECT SUM(CAST(REPLACE(amount,'NULL',0) as MONEY))
FROM t
最佳做法当然是不将数字存储为字符串,但遗憾的是我们无法始终控制数据。
答案 1 :(得分:2)
在您的演示中,您在最后一条记录中实际上没有空值,您有一个名为“NULL”的字符串。将其更改为实际的空值,它应该工作