【问题标题】:Breaking strings in a column by using a sliding window in PostgreSQL在 PostgreSQL 中使用滑动窗口打破列中的字符串
【发布时间】:2020-03-23 22:56:00
【问题描述】:

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

输入

Column
TTTTACAATATAGCCAC
TTTGAAGAAAACATGCA
TTTCATACGGCTAGCGG
TTTAGTCTGTATGCTTG

对于第一个字符串,预期输出如下(滑动窗口 = 9)。我期待列的每个字符串都有这样的输出。

输出

TTTTACAAT
TTTACAATA
TTACAATAT
TACAATATA
ACAATATAG
CAATATAGC
AATATAGCC
ATATAGCCA
TATAGCCAC

谢谢

【问题讨论】:

    标签: postgresql split sliding-window


    【解决方案1】:

    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, split.start, 9)
    FROM split;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2011-02-17
      • 2012-01-14
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多