SQL Server资金数据类型问题

时间:2010-02-10 15:02:23

标签: sql sql-server-2000 types

我们有带有货币数据类型列的SQL Server 2000数据库,我们在money栏中的数字有奇怪的问题,我们存储了2位小数的数字。很长一段时间一切都很好。但是现在我看到在某些行中,编号47.22现在编号为47.2178。当我选择CAST(COLUMN作为CHAR)结果是47.22但是当我从ADO记录集中检索值时,我有结果47.2178。我浏览所有应用程序,如果有任何地方,它可以写入4位小数的数字,什么都没找到(在应用程序历史记录日志中有应用程序写入47.22到数据库的记录)。可以是一些SQL Server问题吗?

编辑:应用程序是用VB6编写的

2 个答案:

答案 0 :(得分:3)

您实际使用货币数据类型还是使用浮点类型?

使用企业管理器从该表中进行选择时会发生什么?一切看起来都不错吗?

我的猜测是你正在将数据转换为某个地方的浮点类型。可能在ADO代码中。

<强>更新

Per MS:将钱投入字符串类型时,机器的区域设置就会发挥作用。这就是为什么它四舍五入到小数点后两位。

您有三种选择。

  1. 首先将货币类型转换为等效的小数,然后将结果转换为char
  2. 将机器区域设置更改为默认格式。
  3. 请勿使用货币数据类型,只需使用小数。

答案 1 :(得分:1)

不要使用Enterprise Manager对表中真正存储的内容得出任何结论。 EM有时会对如何解释数据有自己的看法。

查看你的CAST(.... to CHAR)原因在文档中解释(寻找CAST&amp; CONVERT)......

  

下表显示了这些值   可用于的风格   将钱或小钱币兑换成   人物数据。

     

价值输出
  0(默认)无逗号   每三个数字左边的   小数点,和两位数   小数点右边;对于   例如,4235.98。

     

每个1个逗号   左边三位数   小数点,和两位数   小数点右边;对于   例如,3,510.92。

     

2没有逗号   每三个数字左边的   小数点,和四位数   小数点右边;对于   例如,4235.9819。

编辑:最后想出了如何使用BlockQuote功能。 : - )