Ran*_*nan 5 sql-server ssis sql-server-2008-r2 type-conversion
我需要在不截断的情况下捕获数值。但是即使我将比例指定为“2”,输出值也会被截断。
列'A'数据类型 - numeric(5,2)
情况1:
输入值: 123.55689335218777665555777778899995544
输出 : 123.56
案例2:
输入值: 1234.55689335218777665555777778899995544
输出: Arithmetic overflow error converting varchar to data type numeric.
我的问题是为什么当比例高于“2”时我没有收到任何错误,但当精度高于 3 时却收到错误。
我在 SSIS 数据转换任务中面临这个问题。我需要捕获在另一个表中被截断的行。出于显而易见的原因,以这种方式简化了这个问题。
您可以容纳的最大数字numeric(5,2)
是999.99
。因此123.556...
很好,但是1234.556...
太大了。
您可以在文档中找到隐式转换期间截断、舍入和错误的规则:
\n\n\n\n我不太了解 SQL 服务器,所以我不知道您是否可以配置该行为。一种想法是将数据加载到带有numeric(7,4)的表中。然后,您可以检查哪些值被类似于以下的查询截断:
\n\nselect t1.<key> \nfrom t1 join t2 \n on t1.<key> = t2.<key> \nwhere t2.<col> - t1.<col> <> 0\n
Run Code Online (Sandbox Code Playgroud)\n