sql-server – 为什么当乘以和其他数字时精度正在减少
发布时间:2020-05-23 14:04:39 所属栏目: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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何从SQL Server 2008中的现有数据库创建XML架构
- JOIN ON子句中的T-SQL Case语句
- 文件备份专家 4.2绿色注册版 非破解版 提供下载于注册码
- sql-server – 模仿group_concat()与GROUP BY结合使用
- sql-server-2005 – 从稀疏填充的数据库表中生成每天一分钟
- sql-server-2008 – 如何加速这个Sql Server Spatial查询?
- SQL – 使用UNION加入?? UNION使用JOIN?
- 如何在MS SQL上安装wordpress
- SQL Server中检查字段的值是否为数字的方法
- SQL Server根据分区表名查找所在的文件及文件组实现脚本
