PostgreSQL中如何将JSON格式字符串列拆分为多列?
PostgreSQL从JSON字符串字段提取属性为列的方法
不需要执行pivot操作——pivot是用来把行数据转成列(比如把多行分类统计结果合并到同一行的不同列),而你的需求是直接解析JSON字符串里的属性,转成同一行的新列,用PostgreSQL的JSON解析功能就能搞定。
假设你的表名为your_table,details是存储JSON字符串的文本列,直接用下面的SQL查询就能提取所需字段:
SELECT details::json->>'id' AS id, details::json->>'Time' AS "Time", details::json->>'Session' AS session, (details::json->>'teamPercentage')::int AS team_percentage FROM your_table;
代码说明:
details::json:把文本类型的JSON字符串转为PostgreSQL原生的JSON类型,这样才能使用JSON解析函数->>:提取指定键对应的文本值,适合id、Time、Session这类字符串属性- 对于
teamPercentage,提取后转成int类型,方便后续做数值计算或筛选
如果要把这些字段永久添加到表中(而不是临时查询),可以执行以下SQL:
-- 先添加新列 ALTER TABLE your_table ADD COLUMN id text, ADD COLUMN "Time" text, ADD COLUMN session text, ADD COLUMN team_percentage int; -- 从JSON字符串中提取值更新到新列 UPDATE your_table SET id = details::json->>'id', "Time" = details::json->>'Time', session = details::json->>'Session', team_percentage = (details::json->>'teamPercentage')::int;
内容的提问来源于stack exchange,提问作者analyst92
相关产品推荐
相关产品推荐

