gpt4 book ai didi

postgresql - 在每第 n 个字符后拆分字符串

转载 作者:行者123 更新时间:2023-11-29 11:20:49 25 4
gpt4 key购买 nike

有没有办法在 PostgreSQL 中每第 n 个字符后拆分字符串?我认为 regexp_split_to_array 可以用来做这个:

select unnest(regexp_split_to_array('abcdefgh', E'...regexp here...'));

示例输入:abcdefgh

所需的输出(每第 2 个字符后拆分):

ab
cd
ef
gh

所需输出(每第 3 个字符后拆分):

abc
def
gh

什么正则表达式会这样做?还有其他解决办法吗?

最佳答案

使用substringgenerate_series:

regress=> select substring('abcdefgh' from n for 2) from generate_series(1, length( 'abcdefgh' ), 2) n;
substring
-----------
ab
cd
ef
gh
(4 rows)

regress=> select substring('abcdefgh' from n for 3) from generate_series(1, length( 'abcdefgh' ), 3) n;
substring
-----------
abc
def
gh
(3 rows)

这被简单地包装到一个可内联的 SQL 函数中:

CREATE OR REPLACE FUNCTION string_nchars(text, integer) RETURNS setof text AS $$
SELECT substring($1 from n for $2) FROM generate_series(1, length($1), $2) n;
$$ LANGUAGE sql IMMUTABLE;

用法:

regress=> SELECT string_nchars('abcdefgh',3);
string_nchars
---------------
abc
def
gh
(3 rows)

关于postgresql - 在每第 n 个字符后拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892255/

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