我有一个表,其中包含太长的1和0项。例如,我有一个表:

| Sent id.|   BoW.   |
|---------|----------|
|    1    | 10100101 |
|    2    | 00011110 |
|    3    | 10101111 |

我想创建一个新的表,将分裂列弓。输入任意长度(在本例中为4)并分配块号。
| Sent id.| Chunk No. | BoW. |
|---------|-----------|------|
|    1    |     1     | 1010 |
|    1    |     2     | 0101 |
|    2    |     1     | 0001 |
|    2    |     2     | 1110 |
|    3    |     1     | 1010 |
|    3    |     2     | 1111 |

我是初学者,试图在文档中搜索,但没有成功。可能是这样的,但功能正常:
CREATE TABLE Bow2 AS
  SELECT Sent_id,
         (Chunk+1) AS Chunk_No,
         BoW/div(4) AS BoW;
  FROM Bow1;

最佳答案

想到的一个方法是使用generate_series()

select b.sent_id, chunk, substring(bow from (chunk - 1) * 4 + 1 for 4)
from (select b.sent_id, generate_series(1, 1 + floor(length(bow) - 1 / 4) ) as chunk
      from bow1 b
     ) b;

这种方法是灵活的,因为它适应不同长度的bow

关于sql - 将原始表分为Postgres中的大块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35672293/

10-11 08:04