2

我在 Teradata 中有一个数据类型为 float 的列。我想找到该列的最大精度和比例。

注意:我的专栏的比例部分在大多数地方都有10位以上的数字。

样本数据

123.12321323002
13123213.13200003
33232.213123001

我需要的输出是 Precsion 19(比例 + 长度为 13123213),比例为 11(长度为 12321323002)或

8(长度为 13123213)、11(长度为 12321323002)。

我试图找到他们购买将列转换为 varchar 并根据“。”拆分它们。并将整数和小数部分设为 2 列,然后找到 2 列的最大长度。但是当我选择数据时,Teradata 会四舍五入比例部分。所以在那之后,如果我将它们转换为字符,我得到的比例部分价值较小。

例如:

组织数据:1234.12312000123101

我从 Teradata 中选择时的数据:1234.12312000123

4

2 回答 2

0

当您需要没有预定义比例的高精度时,只需切换到NUMBER数据类型,它是 DECIMAL 和 FLOAT 的混合。

精确数字,至少 38 位精度,无预定义比例,范围为 1E-130 .. 1E125。

漂浮在类固醇上:-)

于 2020-12-30T09:24:37.660 回答
0

这是一个有点长的评论。

Teradata 使用 IEEE 格式来表示实数/浮点值。这给出了 15-17 位的精度。唉,你需要 19 位数字,所以你想要的值没有存储在数据库中。您无法恢复它们。

您可以做的是修复数据库,因此它使用numeric/ decimal/ number。这支持你想要的: NUMERIC(19, 11). 然后,您需要重新加载数据,以便将其正确存储在数据库中。

于 2020-12-29T13:43:47.637 回答