arrays - Postgresql:具有逗号分隔值的行列中的编辑距离

标签 arrays postgresql levenshtein-distance

我有一个包含以下内容的表格:

ID |名称 |别名

1 |威廉 |威尔、威洛、沃利

如果用户提供的字符串的编辑距离(或变音位,这并不重要)低于用户名或任何已知别名的定义阈值,我想返回行 ID。

我知道一个可能的解决方案是使用一个额外的表来链接用户 ID 和用户别名,尽管我希望尽可能避免使用它。

最佳答案

你需要的是字符串分割/分解。可以这样做:

SELECT DISTINCT u.id FROM users AS u LEFT JOIN
(SELECT u.id,unnest(string_to_array(u.alias, ',')) AS ALIAS FROM users AS u) AS q
ON u.id=q.id
WHERE levenshtein(u.name,'Jill')<3
OR levenshtein(q.ALIAS,'Jill')<3;   

http://sqlfiddle.com/#!12/494e6/5

关于arrays - Postgresql:具有逗号分隔值的行列中的编辑距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15344377/

相关文章:

java - 使用不同的表达式分割字符串

postgresql - 两列 : Integer and Boolean 上的 Postgres 唯一约束

android - 具有 levenshtein 排序和逐字逐句的 Firebase 高级模糊搜索

string - 非英语语言的编辑距离

c - 如何输出比分配的内存长的字符串

python - 使用邻域和对 3D 数组进行子采样

javascript - 如果名称作为变量给出,如何访问多维数组的成员值

python - 如何在 127.0.0.1 :8000? 上再次运行 django 项目没有主机的 pg_hba.conf 条目

PostgreSQL 用户/角色仅限于查看?

python - 如何加快 Levenshtein 距离计算