【问题标题】:PostgreSQL join with similar addressPostgreSQL join 类似地址
【发布时间】:2016-12-11 18:58:21
【问题描述】:

我正在尝试加入来自不同来源的数据。唯一要加入的公共字段是地址。在表 1 中,地址在街道和州之间有额外的数据(代表社区)。有没有办法使用最相似的地址加入这些表?我有 85,000 个地址,因此无法使用 LIKE 和通配符进行手动搜索。

表 1:
“239 Dudley St Dudley Square Roxbury MA 02119”
“539 Dudley St Dudley Square Roxbury MA 02119”

表 2:
“239 Dudley St Roxbury MA 02119”
“539 Dudley St Roxbury MA 02119”

【问题讨论】:

    标签: postgresql inner-join street-address


    【解决方案1】:

    我有两个建议:

    1)“表2地址中的所有字都存在于表1地址中”:

    select *
    from t1 join
      t2 on (string_to_array(t2.address,' ') <@ string_to_array(t1.address,' '));
    

    2) "对于每个表 1 地址,从表 2 中找到最相似的地址":

    select distinct on(t1.address) *
    from t1 cross join t2
    order by t1.address, similarity(t1.address, t2.address) desc;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2020-08-31
      相关资源
      最近更新 更多