gpt4 book ai didi

sql - 模糊匹配SQL中的字符串

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

我有一个 User 表,它有 idfirst_namelast_namestreet_address城市邮政编码公司用户标识符 , created_at, update_at.

这个表有很多重复,比如同一个用户作为一个新用户被输入了多次,例如


id first_name last_name street_address user_identifier
---------------------------------------------------------
11 Mary Doe 123 Main Ave M2111111
---------------------------------------------------------
21 Mary Doe 123 Main Ave M2344455
---------------------------------------------------------
13 Mary Esq Doe 123 Main Ave M1233444

请问有没有办法对这张表进行模糊匹配

基本上,我想找到所有具有相同姓名、相同地址但可能略有不同的用户,也许地址相同但公寓号不同,或者有一个中间名而其他重复项不't.

我想创建一个连接了 first_name, last_name, street_address 的新列,并对该列进行模糊匹配。

我在连接的 first_name 和 last_name 上尝试了 levenshtein 距离作为 full_name但似乎没有 catch 有中间名的名字

select * from users
where levenshtein('Mary Doe', full_name) <=1;

我正在使用 Databricks 和 PostgreSQL。

谢谢!

最佳答案

在 postgres 中你可以使用 fuzzystrmatch 包。它提供了一个 levenshtein 函数,返回两个文本之间的距离,然后您可以使用以下示例谓词执行模糊匹配:

where levenshtein(street_address, '123 Main Avex') <= 1

这将匹配所有记录,因为“123 Main Ave”和“123 Main Avex”之间的距离为 1(1 个插入)。

当然,这里的值1只是一个例子,会进行相当严格的匹配(仅相差一个字符)。您应该使用更大的数字,或者按照@IVO GELOV 的建议 - 使用相对距离(距离除以长度)。

关于sql - 模糊匹配SQL中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58840005/

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