在字符串值上连接表

时间:2016-06-02 03:51:16

标签: postgresql

我有两个表A和B.每个表都有一个列"名称"类型字符串。我希望从连接操作中获取所有记录,其中A.name是B.name。

的子字符串
select * from A inner join B on A.name like concat('%',B.name,'%');

结果是一张空表。该查询出了问题,因为如果我通过

测试它,我会得到结果
select * from A cross join B where A.name like 'test' and B.name like '%test%';

因为我得到了静态值的一些记录" test"。

2 个答案:

答案 0 :(得分:3)

第一个查询将B匹配为A的子字符串。您需要:

select * from A inner join B on B.name like concat('%',A.name,'%');

select * from A inner join B on position(A.name in B.name) > 0;

答案 1 :(得分:0)

如果要将A.nameB.name的子字符串匹配,则表达式为B.name LIKE '%A.name%'。试试这个:

select *
from A inner join B
on B.name like '%A.name%'