在部分匹配的列上联接表

时间:2018-11-18 21:53:27

标签: sql postgresql

如何在SQL中部分匹配的列上联接两个表?

例如:

T1.column的字符串为'c/ar',而T2.column的字符串为'ar',在这种情况下,我希望将这些表联接起来。

我尝试过

select column2, 
       column3 
from T1 join T2 on T1.column like '%T2.column';

但它返回0行。

3 个答案:

答案 0 :(得分:1)

或者,您可以将strpos函数用作

select column1, column2 
  from T1 
  join T2 on strpos(T1.column1,T2.column2)>0;

Rextester Demo

PostgreSQL的strpos()函数用于查找子字符串在字符串中匹配的位置。

  

语法:    strpos(<字符串>,<子字符串>)

答案 1 :(得分:1)

您还可以使用RIGHT()LENGTH()函数,因为您正在检查T2.Column末尾是否存在T1.Column

ON RIGHT(T1.Column1, LENGTH(T2.Column2)) = T2.Column2

Demo

答案 2 :(得分:0)

您需要将'%'与列T2.column而不是字符串值'T2.column'连接起来:

like ('%' || T2.column)

like CONCAT('%', T2.column)