连接两个表,其中连接条件需要子字符串

时间:2013-09-30 10:58:05

标签: sql oracle join

我正在尝试加入两个oracle数据库表,其中要连接的列包含稍微不同的数据。

例如,表A的列为“ref”,表B的列为“id”。

A.ref包含类似A1234567890B和B.id的数据包含1234567890表格的数据

我尝试根据以下查询加入这两个;

SELECT * FROM A INNER JOIN B
ON SUBSTR(A.ref, 2,10) = B.id;

但是当我知道来自这个子字符串的匹配数据时,这没有返回任何结果。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

SELECT * FROM A INNER JOIN B ON regexp_substr(A.ref, '^[[:alpha:]]+([[:digit:]]+)[[:alpha:]]+$',1,1,'c',1) = B.id

答案 1 :(得分:0)

我最终通过将SUBSTR(A.ref,2,10)填充为12个字符来解决这个问题。