Arrays Postgresql:行-列中的levenshtein距离,值以逗号分隔

Arrays Postgresql:行-列中的levenshtein距离,值以逗号分隔,arrays,postgresql,levenshtein-distance,Arrays,Postgresql,Levenshtein Distance,我有一个包含以下内容的表格: ID |名称|别名 1 |威廉|威尔、威洛、沃利 如果用户提供的字符串的levenshtein距离或变音小于用户名或任何已知别名的定义阈值,则我希望返回行ID 我知道一个可能的解决方案是使用一个附加的表来链接用户ID和用户别名,尽管我希望尽可能避免使用它。您需要的是字符串拆分/分解。可以这样做: SELECT DISTINCT u.id FROM users AS u LEFT JOIN (SELECT u.id,unnest(string_to_array(u.a

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

ID |名称|别名

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

如果用户提供的字符串的levenshtein距离或变音小于用户名或任何已知别名的定义阈值,则我希望返回行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;   

通常,有多种解决方案:

select  u.id
from    users u
where   3 >
any
(
    select  levenshtein ( 'Willey'::text, a )
    from    regexp_split_to_table
        (
            concat_ws ( ',' , u.name::text , u.alias::text )
        ,   ','
        ) as a
)