我有一个包含以下内容的表格:
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;
关于arrays - Postgresql:具有逗号分隔值的行列中的编辑距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15344377/