SQL将具有相同含义的不同列值分组

SQL将具有相同含义的不同列值分组,sql,postgresql,Sql,Postgresql,我的任务是在postgres中使用SQL查询将两列匹配在一起。在我的任务中,我需要使用相同的ID将两列名称不同但含义相同的列匹配在一起。下面我将对此进行说明: 表1 name ,Group Terminal point 1 ,Terminal Terminal point town 1,Terminal Terminal point 2 ,Terminal Terminal point 3 ,Terminal 表2 Name

我的任务是在postgres中使用SQL查询将两列匹配在一起。在我的任务中,我需要使用相同的ID将两列名称不同但含义相同的列匹配在一起。下面我将对此进行说明:

表1

name                 ,Group
Terminal point 1     ,Terminal 
Terminal point town 1,Terminal 
Terminal point 2     ,Terminal
Terminal point 3     ,Terminal
表2

Name      ,ID
Terminal 1,T01 
Terminal 1,T01 
Terminal 2,T002
Terminal 3,T0003
输出表

Name                  ,Group    , ID 
Terminal Point 1      , Terminal, T01
Terminal Point town 1 , Terminal, T01
Terminal Point 2      , Terminal, T002
Terminal Point 3      , Terminal, T0003

我尝试过使用GROUPBY和内部联接,以及ID的第一个和最后一个字符的substr,但我无法做到这一点,因为在PostgresSQL查询中不允许使用len。欢迎提出任何建议,并提前感谢

看起来这场比赛可能是这样的:

select t1.*, t2.id
from table1 t1 join
     table2 t2
     on t2.name = replace(name, 'point ', '');
至少,某种类型的字符串操作似乎是必要的。

您可以像这样尝试

因此,您的查询应该是

select
  *
from
  table1 t1
    join (select distinct * from table2) t2 on (to_tsvector(t1.name) @@ plainto_tsquery(t2.name))
select
  *
from
  table1 t1
    join (select distinct * from table2) t2 on (to_tsvector(t1.name) @@ plainto_tsquery(t2.name))