【发布时间】:2017-12-12 08:32:49
【问题描述】:
整个下午我都在绞尽脑汁,我觉得我错过了一些明显的东西。提前致谢。
我有两个表,A 和 B。表 A 有一个名为 A_id 的列,它的类型为 DECIMAL(16,0)。表 B 有一个名为 B_id 的列,它的类型为 varchar(100)。我正在尝试进行内部连接,最好是从 A 到 B。之后,我还需要使用 where 子句过滤结果,例如 A = 12345。到目前为止,我已经尝试了以下内容。
select A.A_id, B.B_id
from A
join B on B.B_id = cast(cast(A.A_id as bigint) as archer(100))
where A_id = '12345';
(我也尝试将 A,A_id 直接转换为 varchar)
这不会产生任何错误,但不会返回任何结果。我知道它们是相同的 A_id 和 B_ids。
此外,下面的代码可以正常工作并返回良好的结果
select A.A_id, B.B_id
from B
join a on B.B_id = A.A_id
where B_id = '12345';
如果我去掉where 子句,那么sql 会返回error message (2620) 表明我性格不好。同样,如果我不进行任何转换,sql 将返回错误消息。我假设正在进行某种隐式转换,使第二块代码工作。
我真的需要关于如何使第一段代码工作的帮助。那么,如何正确地castA.A_id,这样连接才能真正起作用。
【问题讨论】:
-
我不明白问题是什么。您的最后一个查询似乎有效。所以,使用那个版本。
-
我宁愿让第一块代码工作,从 A 中选择并加入 B。另外,正如我所提到的,当我删除 where 子句时,第二块代码将无法工作。跨度>