Teradata 在 JOIN 语句中使用 CAST

Teradata using CAST in a JOIN statement

我正在尝试向 运行 现有报告中添加一些字段。要添加这些字段,我需要加入另一个 table。问题是每个 table

上的字段类型不同
Table A / FieldA = Varchar (20)
Table B / FieldB = Decimal (19,0)

这是我的连接:

inner join TableA ta on ta.FieldA = b.FieldB 

通过此连接,我得到 SELECT Failed [3754] Precision error in FLOAT type constant or during implicit conversions

我想我必须使用这样的 CAST 语句:

inner join TableA ta on ta.FieldA = cast(b.FieldB as Varchar (20))

当我现在 运行 报告时,我没有得到任何结果,我预计至少有 1 行。

任何有关内部联接的帮助将不胜感激。谢谢

而不是强制转换,尝试:

TO_CHAR(b.FieldB)

您的联接 on ta.FieldA = b.FieldB 将导致从 VarChar 到 Float 的自动类型化。当您实际得到 19 位数字时,它将溢出 Float 的 15 位数字精度。

当您 cast(b.FieldB as Varchar (20)) 可能是默认的小数分隔符时出现问题,即 123 将 return 123.

您可以尝试 on ta.FieldA = TRIM(TRAILING '.' FROM b.FieldB),但最好的方法可能是 on TO_NUMBER(ta.FieldA) = b.FieldB。这也将防止类型转换错误,因为它只是 returns NULL 表示错误数据。