【问题标题】:SQL Server - Varchar to Decimal with reduced precisionSQL Server - 降低精度的 Varchar 到 Decimal
【发布时间】:2015-05-15 00:02:20
【问题描述】:

我目前正在将表中的几列从 varchar 转换为十进制。所有值(当不为空时)都是有效数字。我遇到的问题是十进制值的所需精度小于 varchar 显示的精度。例如,我们在其中一列上移动到十进制(5,2),并且其中一行中该列的值是“259.19999999999999”。

当我尝试直接 CAST 或 CONVERT 时,我最终得到“将 varchar 转换为数字数据类型的算术溢出错误”。错误。

有什么简单的方法可以做到这一点而不必弄乱 CLR?

【问题讨论】:

  • 你是如何转换数据的?,因为这个:DECLARE @A VARCHAR(30) = '259.19999999999999' SELECT CONVERT(DECIMAL(5,2),@A) 对我来说很好
  • 我猜你也有一个排序规则,其中. 是千位分隔符,',' 是小数点。使用 PARSE 而不是 convert 并指定 us_english 作为文化
  • @PanagiotisKanavos - 抱歉。忘了提。我在 SQL2008 上。
  • 然后尝试在你的演员或转换后添加COLLATE YOUR_COLLATION ,如documentation所示

标签: sql-server decimal type-conversion


【解决方案1】:

我发现了问题。没关系。我的列中的一行缺少字符串数据中的小数点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2016-06-18
    • 2018-12-28
    • 2022-11-02
    • 2014-08-05
    相关资源
    最近更新 更多