SQL在两个字符串上连接两列

时间:2017-12-07 21:36:50

标签: sql string oracle join

我正在尝试在某些字符串上连接两列。唯一的问题是,其中一列的一个包含大量文本,我想要加入的字符串位于此文本的中间。例如:

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 || '%') 

这不返回任何结果,两个表将不会加入。

1 个答案:

答案 0 :(得分:2)

将较短的字符串与通配符符号连接起来,然后对较长的字符串使用LIKE。注意双端通配符搜索效率不高,这将是一个“昂贵”的查询。

SQL Fiddle

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 |