【发布时间】: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