gpt4 book ai didi

sql - 从表中选择列名和值

转载 作者:行者123 更新时间:2023-11-29 11:57:16 25 4
gpt4 key购买 nike

如果我在 PostgreSQL 数据库中有下表:

Col1    Col2    Col3    

A a 1
B b 2

有没有一种方法可以在不显式指定列名的情况下获取每个值的列名? IE。结果集如下:

Col1    A
Col1 B
Col2 a
Col2 b
Col3 1
Col3 2

最佳答案

当然,您可以编写PL/pgSQL 函数并查询目录表pg_attribute。你自己。但是使用以下其中一项会容易得多:

JSON

函数row_to_json()提供了一半的功能。随 Postgres 9.2 引入:

SELECT row_to_json(t, TRUE) FROM tbl t;

您根本不必提及列名,该函数从表类型派生它们。

->SQLfiddle demo.

但是你需要 json_each_text()从 Postgres 9.3 一路走下去:

SELECT json_each_text(row_to_json(t)) FROM tbl t;

要获得您显示的排序顺序:

SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;

(不清楚你要如何精确排序。)
未经测试。 SQLfiddle 还不提供 Postgres 9.3。

hstore

但是,您可以对 additional module hstore 执行相同的操作.自 8.4 起可用。安装一次:

CREATE EXTENSION hstore;

详情:
Key value pair in PostgreSQL

查询:

SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;

就是这样。
同样,没有 SQLfiddle,因为不能在那里安装额外的模块。

关于sql - 从表中选择列名和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18991334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com