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 表示错误数据。
我正在尝试向 运行 现有报告中添加一些字段。要添加这些字段,我需要加入另一个 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 表示错误数据。