2

我正在尝试将两个表连接在一起,如下所示。

Table A        Table B
Field1         Field1
GO             GO
FOREGO
OK GO

我只想加入表 A 中的 field1 具有与表 B 中的单词完全相同的单词,但不是另一个单词的一部分。所以 GO 和 OK GO 会加入成功,FOREGO 将不允许加入。

我有一种预感,我会使用 reg_exp 来完成连接,但我不知道如何实现。

4

2 回答 2

0

我有一种预感,我会使用 reg_exp 来完成连接,但我不知道如何实现。

你可以使用REGEXP_LIKE

SELECT DISTINCT A.*
FROM TableA A
JOIN TAbleB B
 ON regexp_like(A.Field1, '( |^)('|| B.Field1|| ')( |$)');

DBFiddle 演示

于 2017-12-02T16:28:15.443 回答
0

假设单词被空格包围,你可以这样做:

select a.*
from a join
     b
     on ' ' || a.field1 || ' ' like '% ' || b.field1 || ' %';

这种方法和使用的版本都不regexp_substr()会有很好的性能。我建议您将表 b 中的单词解析到另一个表中,并使用简单的等值连接。

于 2017-12-02T16:37:01.910 回答