【问题标题】:Join tables on a partially matched columns在部分匹配的列上连接表
【发布时间】:2018-11-18 21:53:27
【问题描述】:

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

例如:

T1.column 具有字符串 'c/ar'T2.column 具有字符串 'ar' 并且我希望在这种情况下连接表。

我试过了

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

但它返回 0 行。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    或者,您可以使用strpos 函数作为

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

    Rextester Demo

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

    语法: strpos(,)

    【讨论】:

      【解决方案2】:

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

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

      Demo

      【讨论】:

        【解决方案3】:

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

        like ('%' || T2.column)
        

        like CONCAT('%', T2.column)
        

        【讨论】:

          猜你喜欢
          • 2020-08-12
          • 1970-01-01
          • 1970-01-01
          • 2013-12-23
          • 1970-01-01
          • 2015-05-27
          • 2015-08-24
          • 2012-02-17
          • 1970-01-01
          相关资源
          最近更新 更多