假设我有一个json,如下所示:
some_json = {'key_a': {'nested_key': 'a'},
'key_b': {'nested_key': 'b'}}
注意key_a
和key_b
是映射到字典的可选键,可能存在,也可能不存在。
我有一个函数,它检查some_json
中是否存在外键,并返回一个布尔值。
CREATE FUNCTION key_exists(some_json json, outer_key text)
RETURNS boolean AS $$
BEGIN
RETURN (some_json->outer_key IS NULL);
END;
$$ LANGUAGE plpgsql;
我得到以下错误:
ProgrammingError: operator does not exist: json -> boolean
为什么outer_key
等同于布尔值?执行此检查的正确语法是什么?
你也可以用'?'像这样的接线员:
如果需要按嵌套键进行查询,请按如下方式使用:
见http://www.postgresql.org/docs/9.5/static/functions-json.html
注意:仅适用于
jsonb
类型。要检查键是否存在,可以使用运算符->;这用于按键获取JSON对象字段 例如:
您还可以通过“操作员”和“搜索”键进行搜索
将JSON对象字段获取为文本:'{“a”:1,“b”:2}'::JSON->;>;'b',方法是使用运算符->;>
函数的作用与名称完全相反,但修复函数的方法是在
some_json->outer_key
周围添加(
和)
。这里是它的完整功能,并且与您的函数名相匹配(注意
NOT
前面的NULL
)。一些测试:
当钥匙不存在时:
相关问题 更多 >
编程相关推荐