Postgresql 中 JSON/B 运算符的等效函数

Gam*_*mes 1 postgresql json

我试图深入研究文档,但似乎找不到任何我想要的东西。PostgreSQL 中的各种 JSON/B 运算符(->->>@>?等)是否有等效函数?

编辑:为了澄清,我想知道是否可以让以下分组查询返回相同的结果:

SELECT '{"foo": "bar"}'::json->>'foo';                   -- 'bar'
SELECT json_get_value('{"foo": "bar"}'::json, 'foo');    -- 'bar'

SELECT '{"foo": "bar"}'::jsonb ? 'foo';                  -- t
SELECT jsonb_key_exists('{"foo": "bar"}'::jsonb, 'foo'); -- t
Run Code Online (Sandbox Code Playgroud)

jja*_*nes 6

您可以使用系统目录来发现与每个运算符等效的功能。

select * from pg_catalog.pg_operator where oprname ='?';
Run Code Online (Sandbox Code Playgroud)

这表明该函数名为“jsonb_exists”。有些运算符是重载的,并且会给出多个函数,您必须查看参数类型来区分它们。

每个运算符“背后”都有一个功能。该函数本身可能会或可能不会被记录。