我有一个包含这样的列的表:
-------------------------------
id | Tags
-------------------------------
1 | ['tag1','tag2']
2 | []
3 | ['tag1','tag3']
首先我想删除'['和']'字符然后我可以做这样的事情:
-------------------------------
id | Tags
-------------------------------
1 | 'tag1'
1 | 'tag2'
3 | 'tag1'
3 | 'tag3'
这些行来自我无法修改的API,我想要一个表格来加入标签和这个项目ID。 它甚至不是一个postgresql数组,因此我无法在循环中提取数据,我需要解析这个“数组”并进行左连接?在桌子上得到这个结果。 但我不知道如何正确提取数据
生成表格的代码:
CREATE TABLE sample (
"id" bigint,
"tags" text);
INSERT INTO "public"."sample"("id", "tags") VALUES(1, '[''tag1'',''tag2'']') RETURNING "id", "tags";
INSERT INTO "public"."sample"("id", "tags") VALUES(2, '[]') RETURNING "id", "tags";
INSERT INTO "public"."sample"("id", "tags") VALUES(3, '[''tag1'',''tag3'']') RETURNING "id", "tags";
提前致谢
答案 0 :(得分:1)
最好将您的列定义为text[]
而不是text
,以便它包含数组。
使用当前列定义的解决方法是将其强制转换为数组,然后使用unnest()
SELECT
id,
unnest(replace(replace(tags, '[', '{'), ']', '}')::text[])
FROM
sample
给出:
id | unnest
----+--------
1 | 'tag1'
1 | 'tag2'
3 | 'tag1'
3 | 'tag3'
(4 rows)