2

我正在尝试将一些字段添加到运行良好的现有报告中。要添加这些字段,我需要加入另一个表。问题是每个表上的字段类型不同

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 行。

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

4

2 回答 2

1

您的加入on ta.FieldA = b.FieldB将导致从 VarChar 到 Float 的自动类型转换。当你实际得到 19 位数字时,它会溢出浮点数的 15 位精度。

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

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

于 2018-04-11T19:57:26.253 回答
0

而不是演员,请尝试:

TO_CHAR(b.FieldB)
于 2018-04-11T19:38:35.097 回答