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

new*_*bie 1 sql t-sql sql-server

我有由NULL组成的字段数据.我尝试通过将NULL数据设置为0.00来获取SUM数据.

我用

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

在这里演示

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

Har*_* CO 5

您的NULL值不是空值,而是包含单词"NULL"的字符串:

SQL小提琴

当您NULL根据演示将其更改为真实时,这将在没有ISNULL()自聚合忽略NULL值的情况下工作:

SELECT SUM(CAST(amount as MONEY)) 
FROM t
Run Code Online (Sandbox Code Playgroud)

如果您需要解决该字符串值,请使用REPLACE()而不是ISNULL():

SELECT SUM(CAST(REPLACE(amount,'NULL',0) as MONEY)) 
FROM t
Run Code Online (Sandbox Code Playgroud)

最佳做法当然是不将数字存储为字符串,但遗憾的是我们无法始终控制我们获得的数据.