列结果略有不同时的 SQL (Oracle) 联接
Posted
技术标签:
【中文标题】列结果略有不同时的 SQL (Oracle) 联接【英文标题】:SQL (Oracle) Joins when column results are slightly different 【发布时间】:2014-01-10 16:03:44 【问题描述】:我需要在一个相似的列上连接 2 个表,其中列之间的数据略有不同。一个例子:
表1
Key_ID
______
12345678
12345679
12345671
12345672
表2
Doc_Num
_______
Z12345678
Z12345679
Z12345671
Z12345672
这些是两个表之间唯一相关的列。我需要加入它们以便从表 2 的不同列中返回数据。例如,
SELECT DocTitle, DocDate
FROM Table2
RIGHT JOIN Table1
ON Table2.Doc_Num = Table1.Key_ID
所以我的主要问题是,当我尝试加入的每个数据点前面都有一个“Z”时,我如何加入这两个表?
请原谅我的无知...
【问题讨论】:
【参考方案1】:类似:
select ...
from table1 t1
right join table2 t2 on t1.key_id = to_number(substr(t2.doc_num,2));
【讨论】:
这样可以避免 Z 变成另一个字母时出现问题。【参考方案2】:SELECT DocTitle, DocDate
FROM Table2
RIGHT JOIN Table1
ON Table2.Doc_Num = 'Z' || Table1.Key_ID
或
SELECT DocTitle, DocDate
FROM Table2
RIGHT JOIN Table1
ON substr(Table2.Doc_Num, 2) = Table1.Key_ID
两者都可以
【讨论】:
以上是关于列结果略有不同时的 SQL (Oracle) 联接的主要内容,如果未能解决你的问题,请参考以下文章