我们有带有货币数据类型列的SQL Server 2000数据库,我们在money栏中的数字有奇怪的问题,我们存储了2位小数的数字。很长一段时间一切都很好。但是现在我看到在某些行中,编号47.22现在编号为47.2178。当我选择CAST(COLUMN作为CHAR)结果是47.22但是当我从ADO记录集中检索值时,我有结果47.2178。我浏览所有应用程序,如果有任何地方,它可以写入4位小数的数字,什么都没找到(在应用程序历史记录日志中有应用程序写入47.22到数据库的记录)。可以是一些SQL Server问题吗?
编辑:应用程序是用VB6编写的
答案 0 :(得分:3)
您实际使用货币数据类型还是使用浮点类型?
使用企业管理器从该表中进行选择时会发生什么?一切看起来都不错吗?
我的猜测是你正在将数据转换为某个地方的浮点类型。可能在ADO代码中。
<强>更新强>
Per MS:将钱投入字符串类型时,机器的区域设置就会发挥作用。这就是为什么它四舍五入到小数点后两位。
您有三种选择。
答案 1 :(得分:1)
不要使用Enterprise Manager对表中真正存储的内容得出任何结论。 EM有时会对如何解释数据有自己的看法。
查看你的CAST(.... to CHAR)原因在文档中解释(寻找CAST&amp; CONVERT)......
下表显示了这些值 可用于的风格 将钱或小钱币兑换成 人物数据。
价值输出
0(默认)无逗号 每三个数字左边的 小数点,和两位数 小数点右边;对于 例如,4235.98。每个1个逗号 左边三位数 小数点,和两位数 小数点右边;对于 例如,3,510.92。
2没有逗号 每三个数字左边的 小数点,和四位数 小数点右边;对于 例如,4235.9819。
编辑:最后想出了如何使用BlockQuote功能。 : - )