postgresql - 根据表列的内容创建表

标签 postgresql

我有下面的 sql,运行时生成这个表

select id, trim(s.my_data) as my_data from my_table t, unnest(string_to_array(t.column_to_parse, ':')) s(my_data)

id | my_data
------------
1  | first
1  | last=bbb
1  | middle=ccc
1  | bottle=ddd

我现在想使用 my_data 的内容创建一个表并拆分 my_data 列,以便“=”之前的第一部分成为列名

例如

id | first | last | middle | bottle
-------------------------------------
1  |       | bbb  | ccc    | ddd 

我不能对值进行硬编码,它们每次都会不同,我需要根据表列值创建列名

我该如何实现?

最佳答案

SELECT id,
       split_part(parsed[1], '=', 2) AS first,
       split_part(parsed[2], '=', 2) AS last,
       split_part(parsed[3], '=', 2) AS middle,
       split_part(parsed[4], '=', 2) AS bottle
FROM (SELECT id,
             string_to_array(column_to_parse, ':') parsed
      FROM my_table) q;

 id | first | last | middle | bottle
----+-------+------+--------+--------
  1 |       | bbb  | ccc    | ddd
(1 row)

关于postgresql - 根据表列的内容创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44632640/

相关文章:

hibernate - 如何在 Intellij IDEA 的 Hibernate 中使用逆向工程进行 ORM?

postgresql - Generate_series 用于数字和字母的各种混合

Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

sql - 无法在 PostgreSQL 中选择现有列

Postgresql 左连接没有重复

linux - postgresql 什么时候需要写入文件 "pg_logical/replorigin_checkpoint.tmp"?

postgresql - 臭名昭著的 java.sql.SQLException : No suitable driver found

postgresql - 无法评估 : Error evaluating 'unless' clause

node.js - 使用 TypeORM 在 Postgres bytea 上保存缓冲区仅存储 10 个字节

sql - 在 postgres 中使用带有时间戳的条件语句时出错