我正在尝试将两个表连接在一起,如下所示。
Table A Table B
Field1 Field1
GO GO
FOREGO
OK GO
我只想加入表 A 中的 field1 具有与表 B 中的单词完全相同的单词,但不是另一个单词的一部分。所以 GO 和 OK GO 会加入成功,FOREGO 将不允许加入。
我有一种预感,我会使用 reg_exp 来完成连接,但我不知道如何实现。
我正在尝试将两个表连接在一起,如下所示。
Table A Table B
Field1 Field1
GO GO
FOREGO
OK GO
我只想加入表 A 中的 field1 具有与表 B 中的单词完全相同的单词,但不是另一个单词的一部分。所以 GO 和 OK GO 会加入成功,FOREGO 将不允许加入。
我有一种预感,我会使用 reg_exp 来完成连接,但我不知道如何实现。
我有一种预感,我会使用 reg_exp 来完成连接,但我不知道如何实现。
你可以使用REGEXP_LIKE
:
SELECT DISTINCT A.*
FROM TableA A
JOIN TAbleB B
ON regexp_like(A.Field1, '( |^)('|| B.Field1|| ')( |$)');
假设单词被空格包围,你可以这样做:
select a.*
from a join
b
on ' ' || a.field1 || ' ' like '% ' || b.field1 || ' %';
这种方法和使用的版本都不regexp_substr()
会有很好的性能。我建议您将表 b 中的单词解析到另一个表中,并使用简单的等值连接。