sql-server – 为什么当乘以和其他数字时精度正在减少
发布时间:2020-12-12 08:33:06 所属栏目:MsSql教程 来源:网络整理
导读:我在SQL Server中遇到了以下错误(或功能). 当我使用SUM(*列*),其中列具有数字(18,8)类型,并将其乘以任何其他数字(整数或十进制),结果精度将减少为数字(18,6). 以下是演示的示例脚本. CREATE TABLE #temp (Qnty numeric(18,8))INSERT INTO #temp (Qnty) VALUES
我在SQL Server中遇到了以下错误(或功能).
当我使用SUM(*列*),其中列具有数字(18,8)类型,并将其乘以任何其他数字(整数或十进制),结果精度将减少为数字(18,6). 以下是演示的示例脚本. CREATE TABLE #temp (Qnty numeric(18,8)) INSERT INTO #temp (Qnty) VALUES (0.00000001) INSERT INTO #temp (Qnty) VALUES (0.00000002) INSERT INTO #temp (Qnty) VALUES (0.00000003) SELECT Qnty,1*Qnty FROM #temp SELECT (-1)*SUM(Qnty),SUM(Qnty),-SUM(Qnty),SUM(Qnty) * CAST(2.234 as numeric(18,8)) FROM #temp DROP TABLE #temp 第二个SELECT查询的结果 0.000000 0.00000006 -0.00000006 0.000000 正如你可以看到,我乘以SUM的结果是0.000000 有人可以解释奇怪的行为吗? UPD.我在2000,2005和2008 SQL Server的SQL Management Studio中执行了这个查询. 解决方法使用 SUM聚合数字(18,8)会导致数据类型数字(38,8).如何在将数值乘以数字时计算出结果数据类型,可以在这里找到:Precision,Scale,and Length (Transact-SQL) 常数-1的数据类型是数字(1,0) 精度是p1 p2 1 = 40 最大精度为38,并带有数字(38,6). 阅读更多关于为什么它是数字(38,6)在这里:Multiplication and Division with Numerics (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 单元测试数据库驱动的.NET应用程序
- sql-server-ce-toolbox – 我可以在SQL Server Compact 4中
- sql-server-2008 – 强制首先执行初始化不存在的数据库?
- sql-server – 在SQL Server 2012中获取总计数以及分页的更
- sql-server – 使用SQL Server从名为相同的XML节点获取所有
- Mysql主从复制(master-slave)实际操作案例
- SqlServer 2014 Enterprise 企业版安装程序下载与安装教程
- SQL CLR触发器可以执行此操作吗?或者,还有更好的方法?
- Access与SqlServer数据类型比较,timestamp时间戳详解
- arcsde for sqlserver安装全过程