gpt4 book ai didi

sql - 如何在 PostgreSQL 中创建一个单词/字符串所有可能的字谜列表

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

如何在 PostgreSQL 中创建一个单词/字符串所有可能的变位词列表。

例如,如果 String 是 'act'那么所需的输出应该是:

行动,空中交通管制,行动计划,猫,战术,tca

我有一个表“tbl_words”,其中包含数百万个单词。

然后我想从这个字谜列表中检查/搜索我的数据库表中的有效单词。

就像上面的字谜列表一样,有效的单词是:act, cat

有什么办法吗?

更新 1:

我需要这样的输出:(给定单词的所有排列)

enter image description here

有什么想法吗??

最佳答案

查询生成 3 个元素集的所有排列:

with recursive numbers as (
select generate_series(1, 3) as i
),
rec as (
select i, array[i] as p
from numbers
union all
select n.i, p || n.i
from numbers n
join rec on cardinality(p) < 3 and not n.i = any(p)
)
select p as permutation
from rec
where cardinality(p) = 3
order by 1

permutation
-------------
{1,2,3}
{1,3,2}
{2,1,3}
{2,3,1}
{3,1,2}
{3,2,1}
(6 rows)

修改最终查询以生成给定单词字母的排列:

with recursive numbers as (
select generate_series(1, 3) as i
),
rec as (
select i, array[i] as p
from numbers
union all
select n.i, p || n.i
from numbers n
join rec on cardinality(p) < 3 and not n.i = any(p)
)
select a[p[1]] || a[p[2]] || a[p[3]] as result
from rec
cross join regexp_split_to_array('act', '') as a
where cardinality(p) = 3
order by 1

result
--------
act
atc
cat
cta
tac
tca
(6 rows)

关于sql - 如何在 PostgreSQL 中创建一个单词/字符串所有可能的字谜列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54504843/

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