• 人大金仓分析型数据库JSON函数和操作符


    目录

    JSON操作符

    JSON创建函数

    JSON聚合函数


    JSON操作符

            对于json和jsonb数据类型,字段、元素和路径提取运算符返回的数据类型与其左侧输入(jsonjsonb)相同,但指定为返回text的数据类型除外,后者将值强制为text。如果JSON输入没有与请求匹配的正确结构,则字段、元素和路径提取运算符返回NULL,而不是失败;例如,如果不存在这样的元素。

    操作
    右操作 数类型
    述描
    例子
    例子结果
    ->
    int
    获得 JSON 数组元素
    '[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2
    {"c":"baz"}
    ->
    text
    根据键获得 JSON
    象的域
    '{"a": {"b":"foo"}}'::json->'a'
    {"b":"foo"}
    ->>
    int
    获得 JSON 数组元素
    text 形式
    '[1,2,3]'::json->>2
    3
    ->>
    text
    获得 JSON 对象域的 t ext 形式
    '{"a":1,"b":2}'::json->>'b'
    2
    #>
    text[]
    获得在指定路径上的 JSON 对象
    '{"a": {"b":{"c": "foo"}}}'::json#>'{a,b}'
    {"c": "foo"}
    #>>
    text[]
    获得在指定路径上的 JSON 对象的 text 形式
    '{"a":[1,2,3],"b":[4,5,6]}'::json#>>'{a,2}'
    3
    jsonb操作符
    操作
    右操作数类
    描述
    例子
    @>
    jsonb
    左边的 json 值包含右边的值
    '{"a":1,"b":2}'::jso nb@>'{"b":2}'::js onb
    <@
    jsonb
    JSON 值是否包含在右值
    '{"b":2}'::jsonb < @ '{"a":1, "b":2}'::
    jsonb
    ?
    text
    / 元素字符串是否存在于 JSON值
    '{"a":1,"b":2}'::jso nb ? 'b'
    ?|
    text[]
    是否存在这些键 / 元素字符串
    '{"a":1, "b":2, "c": 3}'::jsonb ?| array
    ['b', 'c']
    ?&
    text[]
    所有这些键 / 元素字符串都存在
    '["a", "b"]'::jsonb ?& array['a', 'b']
    jsonb比较运算符
    操作符
    描述
    <
    小于
    >
    大于
    <=
    小于或等于
    >=
    大于或等于
    =
    等于
    <> 或者 !=
    不等于

    JSON创建函数

            此表描述了创建 json数据类型值的函数。

    函数
    描述
    例子
    例子结果
    to_js on(a nyel eme nt)
    返回该值作为一个合法的 JSON 象。 数组和组合会被递归处理并且转换成数组和对象
    to_j son( 'Fre d sa id " Hi."': :text )
    "Fr ed  sai d\" Hi. \""
    arra y_to _jso n(an yarr ay[, prett y_b ool])
    返回该数组为一个 JSON 数组
    arra y_to _jso n('{{
    1,5}, {99, 100} }'::int [])
    [[1, 5],[ 99, 10 0]]
    row _to_ json (rec ord [ , pre tty_b ool])
    返回该行为一个 JSON 对象
    row _to_ json (row (1,'f oo'))
    {"f 1": 1,"f 2": "fo o"}
    json _bui ld_a rray( VAR IADI C "a ny")
    VARIADIC 参数列表构建一个可能是异种类型的 JSON
    数组
    json _bui ld_a rray(
    1,2,' 3',4, 5)
    [1, 2, " 3", 4, 5]
    json _bui ld_o bject (VA RIA DIC
    "any ")
    VARIADIC 参数列表构建 JSON 对象
    json _bui ld_o bjec t('fo o',1,'
    bar', 2)
    {"f oo ": 1 , "b ar" : 2}
    json _obj ect(t ext[])
    从文本数组构建 JSON 对象。数组必须是一维或二维数组
    json _obj ect(' {a, 1 , b, " def", c, 3. 5}')
    json _obj ect(' {{a, 1},{b , "de f"},{c , 3.5 }}')
    json_obj ect(' {{a, 1},{b , "de f"},{c , 3.5 }}') 
    json _obj ect(k eys t ext[], valu es te xt[])
    从文本阵列中创建 JSON 对象
    json _obj ect(' {a, b }', '{1 ,2}')
    {"a ": " 1", "b" : "2 "}

    JSON聚合函数

            

    JSON聚合函数
    数函
    参数类型
    返回类型
    描述
    json_agg(record)
    record
    json
    将记录聚合为对象的 JSON数组
    json_object_agg(name,
    value)
    ("any","a ny")
    json
    将名称 / 值对聚合为 JSON 对象
  • 相关阅读:
    [ESP32 Arduino] LVGL Button的使用
    开发累了就摸个鱼,帮我修改一下中式英语
    Spring原理
    Xline 源码解读(四)—— CURP 状态机引擎
    如何部署一个高可用高并发的电商平台
    Go 之 gotable 格式化打印表格
    【问题】在安装torchvision的时候,会自动安装torch?
    使用tensorflow进行完整的DNN深度神经网络CNN训练完成图片识别案例
    【Git】Git 原理和使用
    Qt5.12.6配置Android Arm开发环境(windows)
  • 原文地址:https://blog.csdn.net/qq_27889005/article/details/133267557