即使输入的比例值高于指定值,SQL 查询也不会抛出错误

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 数据转换任务中面临这个问题。我需要捕获在另一个表中被截断的行。出于显而易见的原因,以这种方式简化了这个问题。

Len*_*art 4

您可以容纳的最大数字numeric(5,2)999.99。因此123.556...很好,但是1234.556...太大了。

\n\n

您可以在文档中找到隐式转换期间截断、舍入和错误的规则:

\n\n\n\n

我不太了解 SQL 服务器,所以我不知道您是否可以配置该行为。一种想法是将数据加载到带有numeric(7,4)的表中。然后,您可以检查哪些值被类似于以下的查询截断:

\n\n
select 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