首页 > 解决方案 > 在 oracle 上连接两个表,其中表 A 上的一列正在查找表 B 上两列的值

问题描述

我正在尝试加入两个表,表 A 有一列“Col1”,其中包含帐户号和 ID 值,表 B 有两列名称帐户“Dev”和 ID 列“Ops”,我正在尝试将表 B 加入表A 在 Col1 = 表 B 上的 dev 列,或 Col1 v= 表 B 上的 Ops 列的情况下

从表 a、表 b 中选择 *,其中 a.Col1 = b.Dev 或 a.Col1 = b.Ops

标签: oracle

解决方案


线索在错误消息中-您在评论中披露了该消息,而不是将其包含在原始问题中(正如您应该做的那样)。

它表示Ops第二个表中的(ID)列是number数据类型。当查询尝试将第一个表中'Joe'的列中的名称与(id)之类的数字匹配时 - 就像在第二个表中的名称列不匹配时一样 - 它会尝试将字符串转换为号,导致您看到的错误。在这种情况下,Oracle 会尝试将字符串转换为数字,而不是反过来。Col12381'Joe''Joe'

解决方法很简单 -a.Col1to_char(b.Ops).

希望您能够修复第一张桌子 - 它的设计存在致命缺陷。首先,您不应该忍受这种废话。


推荐阅读