由NULL数据引起的SQL中的语法错误

时间:2013-12-28 02:25:46

标签: sql sql-server tsql

我有包含NULL的字段数据。我尝试通过将NULL数据设为0.00来获取SUM数据。

我用

  

从t

中选择Sum(cast(ISNULL(金额,0)作为金钱))

这里是demo

如何避免此错误 “无法将char值转换为money.char值的语法不正确”

2 个答案:

答案 0 :(得分:5)

您的NULL不是空值,而是带有' NULL'在其中:

SQL Fiddle

根据演示版将其更改为真实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”的字符串。将其更改为实际的空值,它应该工作