我有一个表格,条目太长,有1和0.例如我有桌子:
| Sent id.| BoW. |
|---------|----------|
| 1 | 10100101 |
| 2 | 00011110 |
| 3 | 10101111 |
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的表格来划分列BoW.条目成一些任意长度(在这种情况下为4)并分配块号.
| Sent id.| Chunk No. | BoW. |
|---------|-----------|------|
| 1 | 1 | 1010 |
| 1 | 2 | 0101 |
| 2 | 1 | 0001 |
| 2 | 2 | 1110 |
| 3 | 1 | 1010 |
| 3 | 2 | 1111 |
Run Code Online (Sandbox Code Playgroud)
我是初学者,试图在文档中搜索,但没有成功.也许是这样的,但具有适当的功能:
CREATE TABLE Bow2 AS
SELECT Sent_id,
(Chunk+1) AS Chunk_No,
BoW/div(4) AS BoW;
FROM Bow1;
Run Code Online (Sandbox Code Playgroud)
想到的一种方法是使用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;
Run Code Online (Sandbox Code Playgroud)
这种方法很灵活,因为它适应不同的长度bow.