gpt4 book ai didi

postgresql - 模糊合并两个表postgresql

转载 作者:行者123 更新时间:2023-11-29 12:05:39 24 4
gpt4 key购买 nike

我需要根据名称连接两个表。问题是其中一个数据库中的名称可能存在轻微的拼写错误。我过去使用 Stata 和 Python 的模糊合并解决了这个问题,名称根据它们的相似程度进行匹配,但我想知道这是否可以在 Postgresql 中实现。

例如,可能的数据可能类似于这样:

表A:

first_name_a | last_name_a | id_a----------------------------------   William   |   Hartnell  | 1   Matt      |   Smithe    | 2   Paul      |   McGann    | 3   David     |   Tennant   | 4   Colin     |   Baker     | 5

表 B:

first_name_b | last_name_b | id_b----------------------------------   Matt      |   Smith     | a   Peter     |   Davison   | b   Dave      |   Tennant   | c   Colin     |   Baker     | d   Will      |   Hartnel   | e

最后,我希望我的结果看起来像这样:

first_name_a | last_name_a | id_a | first_name_b | last_name_b | id_b---------------------------------------------------------------------- William     |  Hartnell   |  1   |  Will        | Hartnel     | e Matt        |  Smithe     |  2   |  Matt        | Smith       | a Paul        |  McGann     |  3   |              |             |  David       |  Tennant    |  4   |  Dave        | Tennant     | c Colin       |  Baker      |  5   |  Colin       | Baker       | d             |             |      |  Peter       | Davison     | b

我的 Sonic Sc​​rewdriver 给了我一些这样的伪代码:

SELECT a.*, b.* FROM A a     JOIN B b     WHERE LEVENSHTEIN(first_name_a, first_name_b) IS LESS THAN 1     AND LEVENSHTEIN(last_name_a, last_name_b) IS LESS THAN 1

最佳答案

您提到的 DML:

SELECT a.*, b.* FROM A a
JOIN B b
WHERE LEVENSHTEIN(first_name_a, first_name_b) IS LESS THAN 1
AND LEVENSHTEIN(last_name_a, last_name_b) IS LESS THAN 1

看起来正确,只需提高“模糊度”(给定“小于 1”,用 1 代替您需要的“模糊度”级别)

参见 http://www.postgresql.org/docs/9.1/static/fuzzystrmatch.html有关 LEVENSHTEIN 的引用信息。

关于postgresql - 模糊合并两个表postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com