gpt4 book ai didi

postgresql - 你能在 Postgres 中重新排列一个字符串吗?

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

我正在寻找一种在 Postgres 中重新排列字符串的方法。我需要使一个字符串无法识别,但它也需要是可逆的,这样散列函数就会出现,随机生成的任何东西也会出现。此外,我正在处理 10 个字符长的字符串,因此我想将生成的重新排列的字符串保持在同一个范围内。这不是安全字符串,这只是为了让某些形式能够立即被识别。

我想按照...创建一些东西

Select rearrange('12345abcde');

这会产生这样的东西......

'1a2b3c4d5e'

重新排列函数不需要完全相同,如果我被指向正确的方向,我可以根据我的特定需求调整函数,但长度可能会有所不同,因为我需要能够反转该过程,它需要以非随机方法完成。

最佳答案

示例函数:

create or replace function rearrange(str text, n int)
returns text language sql immutable as $$
select string_agg(item, '' order by (ord- 1) % n, ord)
from regexp_split_to_table(str, '') with ordinality as a(item, ord)
$$;

select rearrange('12345abcde', 5);

rearrange
------------
1a2b3c4d5e
(1 row)

您可以使用 2 作为第二个参数对十个字符的字符串进行反向转换:

select rearrange(rearrange('12345abcde', 5), 2);

rearrange
------------
12345abcde
(1 row)

关于postgresql - 你能在 Postgres 中重新排列一个字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990171/

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