【问题标题】:Error in converting value from char to money将值从字符转换为货币时出错
【发布时间】:2013-12-24 08:49:13
【问题描述】:

我有一个表 tableA,其中包含数据类型为 varchar 的列 [Amount]

它的值如下:

47980.89
333652.61
332388.84
374664.48
368715.26
371689.33
371689.33
368715.26
374664.48 

现在,当我运行查询时,它运行成功,但每次输出不同

SELECT  
   sum(convert(float, Amount))
FROM tableA   

当我尝试其他语句时,我得到一个错误

无法将 char 值转换为货币。 char 值的语法不正确。

代码:

SELECT  
    sum(convert(money, Amount))
FROM tableA

我想得到[Amount] 列的总和

【问题讨论】:

标签: sql-server tsql


【解决方案1】:

应该这样做:

select Sum(isnull(cast(amount as float),0)) from #t

或者你需要它是货币数据类型

select Sum(isnull(cast(amount as money),0)) from #t

fiddle demo

【讨论】:

  • 数据不包含任何我尝试使用 where 条件针对列的 null
  • 好的..所以你能为此发布一个 sql fiddle.. 只需更改我的链接并粘贴到这里
  • 包装逻辑难道不是为了正确吗?即 cast(isnull( 因为 isnull 与列值的 varchar 状态有关。
【解决方案2】:

这样试试

SELECT SUM(CAST(Amount AS MONEY)) From TableA where ISNUMERIC(Amount)=1

【讨论】:

  • 如果 AMOUNT 列包含 ',' 则无法转换为浮点数,但可以转换为浮点数
  • @Himanshu.Parkash 您正在使用哪个 Sql Server?并且您的列是否有任何不相关的值,例如 null、非数字字符串
  • Server 2012 and no my column 不包含任何不相关的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多