我有一个表,其中包含太长的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/