如何将to_jsonb用作row_to_jsonb?关于"多少"的详细信息?

Pet*_*uss 8 postgresql json jsonb postgresql-9.5

我在pg9.4中以"JSON模式"测试了一些查询,现在我正在检查pg9.5是否会带来所有相同的JSONB功能......但是没有row_to_jsonb()函数(!).(为什么它不是 基本参数中的正交指令集?)

该指南 仅说"to_jsonb功能提供了相同的功能".我们在哪里可以检查"多少"?关于这个细节 还有其他特定的JSONB指南吗?

kli*_*lin 13

您可以使用to_jsonb()代替row_to_json(),例如:

with the_table(a, b, c) as (
    select 1, 'alfa', '2016-01-01'::date
)
select to_jsonb(t), row_to_json(t)
from the_table t;

                 to_jsonb                 |             row_to_json             
------------------------------------------+-------------------------------------
 {"a": 1, "b": "alfa", "c": "2016-01-01"} | {"a":1,"b":"alfa","c":"2016-01-01"}
(1 row) 
Run Code Online (Sandbox Code Playgroud)

第一具有比第二由于参数(的类型的更广泛的应用anyelementrecord).

如果to_jsonb()你使用两个参数,你还应该使用row_to_json():

select to_jsonb(array['a', 'b', 'c']);

    to_jsonb     
-----------------
 ["a", "b", "c"]
(1 row)
Run Code Online (Sandbox Code Playgroud)


dba*_*ton 8

您可以用作to_jsonb的直接替代品row_to_json

SELECT to_jsonb(rows) FROM (SELECT * FROM table) rows;
Run Code Online (Sandbox Code Playgroud)