Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在PostgreSQL中将jsonb列值转换为多列_Php_Sql_Postgresql - Fatal编程技术网

Php 在PostgreSQL中将jsonb列值转换为多列

Php 在PostgreSQL中将jsonb列值转换为多列,php,sql,postgresql,Php,Sql,Postgresql,假设我在PostgreSQL中有一个包含以下列的表: CREATE TABLE sample ( id int, jsonb jsonb, date date ) 我插入了两行: INSERT INTO sample (id,jsonb,date) VALUES (1, '{"a":"a","b":"b"}', '2014/01/06'), (2, '{"a":"a","b":"b"}', '2014/01/06') 我想在PostgreSQL中执行select操作,将上述行转换为: 1,"

假设我在PostgreSQL中有一个包含以下列的表:

CREATE TABLE sample
(
id int,
jsonb jsonb,
date date
)
我插入了两行:

INSERT INTO sample
(id,jsonb,date)
VALUES
(1, '{"a":"a","b":"b"}', '2014/01/06'),
(2, '{"a":"a","b":"b"}', '2014/01/06')
我想在PostgreSQL中执行select操作,将上述行转换为:

1,"a","b",'2014/01/06'
2,"a","b",'2014/01/06'
从示例中调用php json_encoderows

然后得到这样的结果:

[{"id":1,"a":"a","b":"b","date":"2014/01/06"},
{"id":2,"a":"a","b":"b","date":"2014/01/06"}]
但现在,如果我从示例中调用php json_encoderows,我会得到以下结果:

[{"id":1,"jsonb":"{"a":"a","b":"b"}","date":"2014/01/06"},
{"id":2,"jsonb":"{"a":"a","b":"b"}","date":"2014/01/06"}]

希望有人能帮我解决这个问题,多亏了大家

9.4使用的横向连接和jsonb函数非常简单:

postgres=# SELECT * FROM sample, jsonb_to_record(jsonb, true) AS x(a text, b text); id | jsonb | date | a | b ----+------------------------------+-------------+------+-------- 1 | {"a": "a", "b": "b"} | 2014-01-06 | a | b 2 | {"a": "a", "b": "b"} | 2014-01-06 | a | b 3 | {"a": "Ahoj", "b": "Nazdar"} | 2014-01-06 | Ahoj | Nazdar (3 rows) 确切结果:

postgres=# SELECT id, a, b, date FROM sample, jsonb_to_record(jsonb, true) AS x(a text, b text); id | a | b | date ----+------+--------+------------ 1 | a | b | 2014-01-06 2 | a | b | 2014-01-06 3 | Ahoj | Nazdar | 2014-01-06 (3 rows)
很棒的Pavel,这就是我想要的,非常感谢你的帮助,我正在使用模块化angularjs应用程序,随时可以问我,也许有一天我可以帮助你,干杯@AlejandroSanchez:很高兴Hi Pavel,希望你能再帮我一点,你知道如何在你和我共享的代码中添加Where子句吗?我可以这样做,但只能通过一个子查询,我不知道这是否是最好的方法。谢谢你advance@AlejandroSanchezPostgreSQL中的子查询没有问题,不用担心。jsonb_to_record函数在过去四年中发生了变化,现在是jsonb_to_recordjsonb,没有第二个参数。