数据仓库服务 GAUSSDB(DWS)-JSON类型:jsonb高级特性

时间:2024-10-21 16:50:33

jsonb高级特性

json和jsonb的主要差异在于存储方式上的不同,jsonb存储的是解析后的二进制,能够体现JSON的层次结构,更便于直接访问等,因此jsonb较json具有很多高级特性。

格式归一化

  • 对于输入的object-json字符串,解析成jsonb二进制后,会天然的丢弃语义上无关紧要的细节,比如空格:
    1
    2
    3
    4
    5
    SELECT '   [1, " a ", {"a"   :1    }]  '::jsonb;
        jsonb
    ----------------------
    [1, " a ", {"a": 1}]
    (1 row)
    
  • 对于object-json,会删除重复的键值,只保留最后一个出现的,例如:
    1
    2
    3
    4
    5
    SELECT '{"a" : 1, "a" : 2}'::jsonb;
    jsonb
    ----------
    {"a": 2}
    (1 row)
    
  • 对于object-json,键值会重新进行排序,排序规则:长度长的在后、长度相等则ascii码大的在后,例如:
    1
    2
    3
    4
    5
    SELECT '{"aa" : 1, "b" : 2, "a" : 3}'::jsonb;
           jsonb
    ---------------------------
    {"a": 3, "b": 2, "aa": 1}
    (1 row)
    
support.huaweicloud.com/sqlreference-830-dws/dws_06_0020.html