在PostgreSQL中使用滑动窗口在列中断开字符串

如何通过使用PostgreSQL中的滑动窗口来中断下面一列中的每个字符串。

输入

Column
TTTTACAATATAGCCAC
TTTGAAGAAAACATGCA
TTTCATACGGCTAGCGG
TTTAGTCTGTATGCTTG

对于第一个字符串,预期输出低于(滑动窗口= 9)。我希望该列的每个字符串都能得到这样的输出。

输出

TTTTACAAT
TTTACAATA
TTACAATAT
TACAATATA
ACAATATAG
CAATATAGC
AATATAGCC
ATATAGCCA
TATAGCCAC

谢谢

yangyong1001 回答:在PostgreSQL中使用滑动窗口在列中断开字符串

generate_series功能是您的朋友。

https://www.postgresql.org/docs/current/functions-srf.html

首先,您需要像这样拆分字符串

WITH split AS(
    SELECT generate_series(1,length('TTTTACAATATAGCCAC') - 8) AS start
)
SELECT substring('TTTTACAATATAGCCAC',split.start,9)
FROM split;

然后,假设您是从表中获取的,则查询将如下所示。

WITH split AS(
    SELECT
        your_table_column as text,generate_series(1,length(your_table_column) - 8) AS start
    FROM your_table_name
)
SELECT substring(text,9)
FROM split;

这将不会显示任何少于9个字符的列,因此需要应用其他逻辑。

本文链接:https://www.f2er.com/3015299.html

大家都在问