如何将逗号分隔的数据分成多行

问题描述 投票:0回答:1

我有一个表 Goods,存储商品的 id、批次和类型。多个ID的货物属于不同类型但属于同一批次,所以记录在一起。

id 批量 类型
123,124,128 1 A、B、C
456,555 2 C
678 3 A、B

我现在想要如下的结果,即将用逗号分隔的数据分成多行(我使用的是PieCloudDB数据库),有什么办法可以实现吗?

id 批量 类型
123 1 A
123 1 B
123 1 C
124 1 A
124 1 B
124 1 C
128 1 A
128 1 B
128 1 C
456 2 C
555 2 C
678 3 A
678 3 B
split
1个回答
0
投票

你可以使用PostgreSQL函数

unnest()
string_to_array()
来实现这一点。(我搜索发现pieclouddb与PostgreSQL兼容,我认为这个方法应该有用)

WITH SplitIDs AS (
  SELECT unnest(string_to_array(id, ',')) AS id, batch
  FROM goods
),
SplitTypes AS (
  SELECT unnest(string_to_array(type, ',')) AS type, batch
  FROM goods
)
SELECT t1.id AS id, t1.batch, t2.type AS type
FROM SplitIDs t1
JOIN SplitTypes t2 ON t1.batch = t2.batch
ORDER BY id, type
© www.soinside.com 2019 - 2024. All rights reserved.