当前位置: 首页 > news >正文

KingbaseES Json 系列三:Json数据操作函数一

KingbaseES Json 系列三--Json数据操作函数一(JSONB_EACH,JSONB_EACH_TEXT,JSONB_OBJECT_KEYS,JSONB_EXTRACT_PATH,JSONB_EXTRACT_PATH_TEXT,JSON_EACH,JSON_EACH_TEXT,JSON_OBJECT_KEYS,JSON_EXTRACT_PATH,JSON_EXTRACT_PATH_TEXT)

JSON 数据类型是用来存储 JSON(JavaScript Object Notation)数据的。KingbaseES为存储JSON数据提供了两种类型:JSON和 JSONB。JSON 和 JSONB 几乎接受完全相同的值集合作为输入。

本文将主要介绍Kingbase数据库的Json数据操作函数第一部分。

准备数据:CREATE TABLE "public"."jsontable" ("id" integer NULL,"jsondata" json NULL,"jsonvarchar" varchar NULL,"jsonarray" json NULL,"jsonrecord" json NULL,"jsonset" json NULL
);INSERT INTO "public"."jsontable" ("id","jsondata","jsonvarchar","jsonarray","jsonrecord","jsonset") VALUES(1,'{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','{"f2": {"f3": 1}, "f4": {"f5": 99, "f6": "foo"}}','[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]','{"a":1,"b":"bcol","c":"cc"}','[{"a":1,"b":"bcol","c":"cc"},{"a":1,"b":"bcol","d":""}]'),(2,'{"a":[1,2,3,4,5]}','{"a": [1, 2, 3, 4, 5]}','[1,2,3,4,5]','{"a":1,"b":"bcol","c":""}','[{"a":1,"b":"bcol","c":""},{"a":1,"b":"bcol","e":""}]'),(3,'{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}}','{"a": 1, "b": ["2", "a b"], "c": {"d": 4, "e": "ab c"}}','[{"f1":1,"f2":null},2,null,3]','{"a":1,"b":"bcol","d":"dd"}','[{"a":1,"b":"bcol","c":"cc_3_1"},{"a":1,"b":"bcol","c":"cc_3_2"}]');CREATE TABLE "public"."comtable" ("id" integer NULL,"name" character varying(10 char) NULL
);INSERT INTO "public"."comtable" ("id","name") VALUES(1,'a'),(2,'b'),(3,'c');

json函数列表

  • JSONB_EACH

  • JSONB_EACH_TEXT

  • JSONB_OBJECT_KEYS

  • JSONB_EXTRACT_PATH

  • JSONB_EXTRACT_PATH_TEXT

  • JSON_EACH

  • JSON_EACH_TEXT

  • JSON_OBJECT_KEYS

  • JSON_EXTRACT_PATH

  • JSON_EXTRACT_PATH_TEXT

json函数简介

JSONB_EACH

功能:

JSON处理函数,扩展最外层的JSON对象成为一组键值对。

用法:

jsonb_each(jsonb)

示例:

demo=# SELECT jt.jsondata,je.* FROM jsontable jt,  jsonb_each(jt.jsondata) je;jsondata                       | key |          value          
------------------------------------------------------+-----+-------------------------{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | f2  | {"f3": 1}{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | f4  | {"f5": 99, "f6": "foo"}{"a":[1,2,3,4,5]}                                    | a   | [1, 2, 3, 4, 5]{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | a   | 1{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | b   | ["2", "a b"]{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | c   | {"d": 4, "e": "ab c"}
(6 行记录)

JSONB_EACH_TEXT

功能:

JSON处理函数,扩展最外层的JSON对象成为一组键值对,返回值为 text 类型。

用法:

jsonb_each_text(jsonb)

示例:

demo=# SELECT jt.jsondata,je.* FROM jsontable jt,  jsonb_each_text(jt.jsondata) je;jsondata                       | key |          value          
------------------------------------------------------+-----+-------------------------{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | f2  | {"f3": 1}{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | f4  | {"f5": 99, "f6": "foo"}{"a":[1,2,3,4,5]}                                    | a   | [1, 2, 3, 4, 5]{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | a   | 1{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | b   | ["2", "a b"]{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | c   | {"d": 4, "e": "ab c"}
(6 行记录)

JSONB_OBJECT_KEYS

功能:

JSON函数,返回外层JSON对象中键的集合。

用法:

jsonb_object_keys(jsonb)

示例:

demo=#  select jt.jsondata,  jo.* from  jsontable jt,  jsonb_object_keys(jt.jsondata) jo;jsondata                       | jo 
------------------------------------------------------+----{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | f2{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | f4{"a":[1,2,3,4,5]}                                    | a{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | a{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | b{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | c
(6 行记录)

JSON_EXTRACT_PATH

功能:

JSON处理函数,返回由 path_elems 指向的JSON值(等效于#>操作符)。

用法:

json_extract_path(from_json json, VARIADIC path_elems text[])

示例:

demo=# select jt.jsondata,  je.* from jsontable jt,  json_extract_path(jt.jsondata ,'a') je;jsondata                       |     je      
------------------------------------------------------+-------------{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | {"a":[1,2,3,4,5]}                                    | [1,2,3,4,5]{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | 1
(3 行记录)-- 多个路径提取子对象中的值demo=# select jt.jsondata,  je.* from jsontable jt,  json_extract_path(jt.jsondata ,'f4' ,'f5') je;jsondata                       | je 
------------------------------------------------------+----{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | 99{"a":[1,2,3,4,5]}                                    | {"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | 
(3 行记录)

JSON_EXTRACT_PATH_TEXT

功能:

JSON处理函数,以 text 类型返回由 path_elems 指向的JSON值(等效于#>操作符)。

用法:

json_extract_path_text(from_json json, VARIADIC path_elems text[])

示例:

demo=# select jt.jsondata,  je.* from jsontable jt,  json_extract_path_text(jt.jsondata ,'a') je;jsondata                       |     je      
------------------------------------------------------+-------------{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | {"a":[1,2,3,4,5]}                                    | [1,2,3,4,5]{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | 1
(3 行记录)-- 多个路径提取子对象中的值demo=# select jt.jsondata,  je.* from jsontable jt,  json_extract_path_text(jt.jsondata ,'f4' ,'f5') je;jsondata                       | je 
------------------------------------------------------+----{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}            | 99{"a":[1,2,3,4,5]}                                    | {"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | 
(3 行记录)

JSON_EACH

功能:

JSON处理函数,扩展最外层的JSON对象成为一组键值对。

用法:

json_each(json)

示例:

参照JSONB_EACH使用示例
  • JSONB_EACH

JSON_EACH_TEXT

功能:

JSON处理函数,扩展最外层的JSON对象成为一组键值对,返回值为 text 类型。

用法:

json_each_text(json)

示例:

参照JSONB_EACH_TEXT使用示例
  • JSONB_EACH_TEXT

JSON_OBJECT_KEYS

功能:

JSON函数,返回外层JSON对象中键的集合。

用法:

json_object_keys(json)

示例:

参照JSONB_OBJECT_KEYS使用示例
  • JSONB_OBJECT_KEYS

JSONB_EXTRACT_PATH

功能:

JSON处理函数,返回由 path_elems 指向的JSON值(等效于#>操作符)。

用法:

jsonb_extract_path(from_json json, VARIADIC path_elems text[])

示例:

参照JSONB_EXTRACT_PATH使用示例
  • JSONB_EXTRACT_PATH

JSONB_EXTRACT_PATH_TEXT

功能:

JSON处理函数,以 text 类型返回由 path_elems 指向的JSON值(等效于#>操作符)。

用法:

jsonb_extract_path_text(from_json json, VARIADIC path_elems text[])

示例:

参照JSONB_EXTRACT_PATH_TEXT使用示例
  • JSONB_EXTRACT_PATH_TEXT
http://www.lryc.cn/news/18485.html

相关文章:

  • 《设计模式》单例模式
  • C/C++每日一练(20230224)
  • 基于YOLO的酸枣病虫害检测识别实践
  • WAF:ModSecurity on Nginx(15)
  • Qt 第3课、Qt 中的字符串类
  • Vulnhub靶场----6、DC-6
  • 华为OD机试真题Python实现【去重求和】真题+解题思路+代码(20222023)
  • lammps教程:Ovito选择特定晶粒的方法
  • DevEco Studio 3.1 Beta1版本发布——新增六大关键特性,开发更高效
  • 【蓝桥杯每日一题】二分算法
  • Spring Batch 高级篇-并行步骤
  • 对spring的@Cacheable缓存理解
  • 力扣-市场分析
  • 【2357. 使数组中所有元素都等于零】
  • 什么品牌的游戏蓝牙耳机比较好?玩游戏延迟低的蓝牙耳机推荐
  • day 33 状态压缩dp
  • 扬帆优配|超3600股飘绿,人民币贬值近300点!外资净卖近38亿
  • 【编程基础之Python】6、Python基础知识
  • selenium基本操作
  • 思科设备命令讲解(超基础二)
  • HTML基础(3)
  • 鸿蒙3.0 APP混合开发闪退问题笔记
  • 批量操作文件功能-课后程序(JAVA基础案例教程-黑马程序员编著-第七章-课后作业)
  • Hadoop3.3.1完全分布式部署
  • SpringMVC中的注解
  • python+Vue学生作业系统 django课程在线学习网站系统
  • CSS 美化网页元素【快速掌握知识点】
  • Tableau连接openGauss实践
  • RabbitMQ 实现延迟队列
  • Spring Bean 生命周期,好像人的一生