【问题标题】:Joining 2 tables on similar strings在相似的字符串上加入 2 个表
【发布时间】:2020-03-31 13:48:44
【问题描述】:

简单来说,我正在尝试在数据集中查找重复项。

我正在尝试做的是与此类似的事情 '''

With no1 as (
Select 'Hi I am sam'::text s
), no2 as (
Select 'Hi, I am'::text s
) Select l.S,f.S
from no1 f 
join no2 l
on ('%'+f.s+'%') ILike ('%'+l.s+'%') OR ('%'+l.s+'%') ILike ('%'+f.s+'%')

'''

我希望 on 语句包含一个将连接这两列的子句,因为它们具有相似的字符串。我尝试使用 pg_trgm 和相似函数,但似乎必须在后端完成。

如果这不可行,您能否告诉我如何使用 pandas 根据该条件加入这些表?

【问题讨论】:

    标签: pandas string postgresql join sql-like


    【解决方案1】:

    我想你想要:

    on f.s ilike '%' || l.s || '%' or l.s ilike '%' ||  f.s || '%'
    

    理由:

    • ilike 将通配符识别为它的 right 操作数;在左侧操作数中,'%' 只是一个百分号,它会阻止匹配

    • Postgres 中的字符串连接运算符是||+ 用于数值)

    【讨论】:

    • 谢谢 GMB,我在这里要做的是识别我的数据集上可能存在的重复项。在这里,由于字符串几乎有 8 个字符相似,所以我想加入 2 个语句。我使用的和您建议的 on 语句仅在一个是另一个的子字符串时才有效。是否有基于相似性的加入?
    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多