SELECT DR.column
FROM DB.Table RCT
LEFT OUTER JOIN DB.Table2 RC ON RCT.NBR_CLMN = RC.NBR_CLMN
LEFT OUTER JOIN DB.Table3 DR ON DR.NEW_NBR_CLMN = RC.VCHAR_COLUMN
在 Teradata SQL Assistant 中运行上面的 SQL 代码会给我一个 2620“格式或数据包含错误字符”错误。在找到问题的确切原因后,似乎是由于 DR.NEW_NBR_CLMN 和 RC.VCHAR_COLUMN 是不同的数据类型,因此隐式转换失败。
我已经尝试使用 CAST AS VCHAR 并在连接的两侧使用 CAST AS BIGINT ,如下所示:
LEFT OUTER JOIN DB.Table3 DR ON CAST(DR.NEW_NBR_CLMN AS BIGINT) = CAST(RC.VCHAR_COLUMN AS BIGINT)
不幸的是,转换为 vchar 会从 DR 表中返回空值,因为没有匹配项。转换为 bigint 会返回与以前相同的错误。部分问题是一列在数字中包含逗号,而另一列包含逗号(例如“66993001968”和“66,993,001,968”)。
所以我尝试使用 REPLACE 删除逗号,但 Teradata 告诉我它的用法不正确。更具体地说,此错误:“选择失败。[3706] 语法错误:预期在 'ON' 关键字和 'REPLACE' 关键字之间存在某些内容。”
这是我正在尝试的:
LEFT OUTER JOIN DB.Table2 RC ON REPLACE(DR.NEW_NBR_CLMN, ',', '') = RC.VCHAR_COLUMN
任何有关整体加入问题或更具体的 REPLACE 问题的帮助将不胜感激!
示例数据:
RC 表示例: