我正在尝试在某些字符串上连接两列。唯一的问题是,其中一列的一个包含大量文本,我想要加入的字符串位于此文本的中间。例如:
Column_a(来自table_a)包含:x
Column_b(来自table_b)包含:tuv xyz abc
我希望能够加入“x”。我可以用什么来完成这个? 这是我的基本代码。
select
*
from (
select
*
from table_a
) ta
left join (
select
*
from table_b
) tb
on bd.person = ttp.login
and ('tuv: ' || ta.column_a like '%tuv: %' || tb.column_b || '%')
这不返回任何结果,两个表将不会加入。
答案 0 :(得分:2)
将较短的字符串与通配符符号连接起来,然后对较长的字符串使用LIKE
。注意双端通配符搜索效率不高,这将是一个“昂贵”的查询。
PostgreSQL 9.6架构设置:
CREATE TABLE table_a
(Column_a varchar(20))
;
INSERT INTO table_a (Column_a) VALUES ('x');
CREATE TABLE table_b
(Column_b varchar(20))
;
INSERT INTO table_b (Column_b) VALUES ('tuv xyz abc');
查询1 :
select
*
from table_a a
left join table_b b on b.column_b like ('%' || a.column_a || '%')
<强> Results 强>:
| column_a | column_b |
|----------|-------------|
| x | tuv xyz abc |