SQL连接另一个字段中包含的属性值

SQL连接另一个字段中包含的属性值,sql,postgresql,join,concatenation,Sql,Postgresql,Join,Concatenation,我希望在以下情况下对attr_1和attr_2执行联接: 属性1=属性2 属性1包含在属性2中 如果attr_1是由“/”分隔的attr_2的值之一,则执行良好匹配 属性1 属性2 SOR:562 累计:5698A/SOR:22/SOR:562 SOR:120 SOR:120/SOR:125 SOR:89 SOR:1001/ACCU:569/SOR:56239/SOR:89 而不是 on t.attr_1 LIKE CONCAT('%',s.attr_2,'%') 我想你想得到的是 on

我希望在以下情况下对attr_1和attr_2执行联接:

  • 属性1=属性2
  • 属性1包含在属性2中
如果attr_1是由“/”分隔的attr_2的值之一,则执行良好匹配

属性1 属性2 SOR:562 累计:5698A/SOR:22/SOR:562 SOR:120 SOR:120/SOR:125 SOR:89 SOR:1001/ACCU:569/SOR:56239/SOR:89 而不是

on t.attr_1 LIKE CONCAT('%',s.attr_2,'%')
我想你想得到的是

on t.attr_2 LIKE CONCAT('%',s.attr_1,'%')

将第二个属性转换为数组:

select *
from first_table t1
  join second_table t2 on t1.attr1 = any(string_to_array(t2.attr2, '/'))

条件应为:

ON CONCAT('/', attr_2, '/') LIKE CONCAT('%/', attr_1, '/%')

请参阅简化的。

您试图从中获得什么输出?我无法理解分隔符的作用。它将如何影响结果?正确的解决方案是修复损坏的数据库设计