如何在Teradata中将big-number转换为varchar

时间:2014-06-11 10:19:59

标签: casting teradata

我有一个包含大数字(超过20位)的float-type-field。然后我想将它转换为varchar,而不是舍入。我尝试了几个查询,但没有。

这是例如:

SELECT CAST(A AS VARCHAR(25)) AS B
    , TRIM(TRAILING '.' FROM CAST(CAST(A AS DECIMAL(25)) AS VARCHAR(25))) AS C
    , TRIM(LEADING '0' FROM CAST(CAST(A AS FORMAT '9(25)') AS VARCHAR(25))) AS D
FROM ( SELECT CAST(79999999999999999999.000 AS FLOAT) A ) t0

结果

B : 8.00000000000000E 019
C : 80000000000000000000
D : 80000000000000000000

我希望得到'79999999999999999999'

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

当您运行SELECT CAST(79999999999999999999.000 AS FLOAT)时,结果会得到80.000.000.000.000.000.000,000。 FLOAT的精度为15到16位,输入有20位有效数字,因此在类型转换过程中它已经四舍五入。

由于您无法在Teradata FLOAT中存储此类数字,因此问题是:“float-type-field”来自何处?甲骨文?

小数位是否知道最大 n ?然后CASTing为DECIMAL(38, n )可能没问题。

你的TD版本是什么? 14引入了NUMBER数据类型,以便从Oracle轻松移植。

NUMBER可用作“float-type-field”。 38位数。