【问题标题】:Error converting data type varchar to numeric将数据类型 varchar 转换为数字时出错
【发布时间】:2017-02-02 07:05:44
【问题描述】:

我有这部分查询导致上述错误:

CONVERT(varchar(15),CAST((AmountOfInsurance) as MONEY),1)

我在做什么?

这是AmountOfInsurance的声明

AmountOfInsurance decimal(19,2),

【问题讨论】:

  • 嗨,AmountOfInsurance 的价值是多少?
  • 错误信息非常清楚。您不能将非数字字符转换为货币。 AmountOfInsurance 有一些非数字字符
  • 你能告诉我 AmountOfInsurance 的数据类型是什么吗??
  • 能否请您发布整个查询,从查询中获取 varchar 并且在代码方面您已分配数字,因此您遇到了错误
  • AmountOfInsurance 没有十进制值。如果 AmountOfInsurance 是十进制或其为 null 也可以正常工作。

标签: sql-server


【解决方案1】:

我希望这对你有用...

CONVERT(varchar(15), CONVERT(money, AmountOfInsurance), 1)

更多信息:最后一个参数决定了输出格式:

  • 0(默认)小数点左边每三位,小数点右边两位无逗号;例如,4235.98。

  • 1小数点左边每三位,小数点右边两位;例如,3,510.92。

  • 2 小数点左边每三位不加逗号,小数点右边每四位不加逗号;例如,4235.9819。

如果您想截断便士并以磅为单位计算,您可以使用四舍五入到最接近的英镑、地板到最低的整磅或天花板来四舍五入

【讨论】:

  • This is plagiarism。请不要从其他答案中逐字复制,而是评论它们是重复的。
  • @mplungjan,很多帖子都提到stackoverflow.com/… .... 看来都是抄袭同源。
  • 这是我从该用户看到的帖子的第二个副本
  • @mplungjan 我为此道歉..现在我会处理这些事情..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2014-10-08
  • 1970-01-01
相关资源
最近更新 更多