KingbaseES Json 系列十--Json数组构造函数(ARRAY_TO_JSON,JSONB_BUILD_ARRAY,JSON_ARRAY,JSON_BUILD_ARRAY)

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函数列表

json函数简介

ARRAY_TO_JSON

功能:

把数组 anyarray 作为json数组返回,一个多维数组会成为一个数组的json数组。如果 pretty_bool 设为真,将会在数组维度之间增加换行符。

用法:

array_to_json(anyarray [, pretty_bool])

示例:


demo=# SELECT array_to_json('{{1,5},{99,100}}'::int[]);
array_to_json
------------------
[[1,5],[99,100]]
(1 行记录) demo=# SELECT array_to_json('{{1,5},{99,100}}'::int[],true);
array_to_json
---------------
[[1,5], +
[99,100]]
(1 行记录)

JSONB_BUILD_ARRAY

功能:

JSON处理函数,将可变参数列表构造成一个可能包含不同数据类型的JSON数组。

用法:

jsonb_build_array( VARIADIC "any")

示例:


demo=# select jsonb_build_array(id,name) from comtable ;
jsonb_build_array
-------------------
[1, "a"]
[2, "b"]
[3, "c"]
(3 行记录)

JSON_ARRAY

功能:

JSON处理函数,函数通过SQL或者JSON数据构建一个JSON数组。

用法1:

JSON_ARRAY (
[ { value_expression [ FORMAT JSON ] } [, ...] ]
[ { NULL | ABSENT } ON NULL ]
[ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]
)
value_expression [ FORMAT JSON ] :为构造JSON数据提供数据的输入子句。
{ NULL | ABSENT } ON NULL :指定此函数在value_expression计算结果为 null 时的行为。
RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ]]:指定生成数据的类型。支持以下类型:json、jsonb、bytea和字符串类型(text、char、varchar和nchar),还支持VARCHAR2、BLOB、CLOB类型。

示例1:


demo=# select json_array(id ,name) from comtable ;
json_array
------------
[1, "a"]
[2, "b"]
[3, "c"]
(3 行记录) -- 设置值为null时,处理方式 demo=# insert into comtable values('','');
INSERT 0 1 demo=# select json_array(id ,name null on null) from comtable ;
json_array
--------------
[1, "a"]
[2, "b"]
[3, "c"]
[null, null]
(4 行记录) demo=# select json_array(id ,name absent on null) from comtable ;
json_array
------------
[1, "a"]
[2, "b"]
[3, "c"]
[]
(4 行记录)

用法2:

JSON_ARRAY (
[ query_expression ]
[ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]
)
query_expression :提供用于构造JSON数组的的数据的SQL查询。查询只能返回包含要在数组中使用的一个列,不能是多列。
RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ]]:指定生成数据的类型。
支持以下类型:json、jsonb、bytea和
字符串类型(text、char、varchar和nchar),
还支持VARCHAR2、BLOB、CLOB类型。

示例2:


demo=# select json_array(select id from comtable ) from dual ;
json_array
------------
[1, 2, 3]
(1 行记录) demo=# select json_array(select id from comtable returning text) from dual ;
json_array
------------
[1, 2, 3]
(1 行记录)

JSON_BUILD_ARRAY

功能:

JSON处理函数,将可变参数列表构造成一个可能包含不同数据类型的JSON数组。

用法:

json_build_array( VARIADIC "any")

示例:

参照JSONB_BUILD_ARRAY使用示例

KingbaseES Json 系列十:Json数组构造函数的更多相关文章

  1. json解析json字符串时候,数组必须对应jsonObjectArray,不能对应JsonObject。否则会解析错误。

    json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject.->只要是[]开头的都是json数组字符串,就要用jsonArray解析 ...

  2. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  3. 处理 JSON null 和空数组及对象

    描述了对 JSON 数据中使用的 null 和空数组及对象的处理. JSON 数据具有 null 和空数组及对象的概念.此部分说明其中每个概念如何映射到 null 和未设置的数据对象概念. Null ...

  4. json字符串、json对象、数组 三者之间的转换

    json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(j ...

  5. JSON对象与JSON数组的长度和遍历方法

    JSON对象与JSON数组的长度和遍历方法         1.json对象的长度与遍历                 结构:var json={“name”:”sm”,”sex”:”woman”} ...

  6. javaScript系列:JSON详解

    JSON详解   JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交 ...

  7. 【SqlServer系列】JSON数据

    1   概述 本文将结合MSDN简要概述JSON数据. 2   具体内容 JSON 是一种流行的数据格式,用于在现代 Web 和移动应用程序中交换数据. JSON 还可用于在 Microsoft Az ...

  8. 双层嵌套json字符串(即json对象内嵌json数组)解析为Map

    之前我层写过一篇文章,介绍了json与map的相互转化,但当时只涉及到单一的json对象或json数组,对json对象内嵌套这json数组的json字符串无法处理,这篇文章主要解决这个问题. 之前的那 ...

  9. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){ Map ...

  10. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

随机推荐

  1. Java判断一个字符串中是否包含数字

    知识点 本例考察以下Java知识点: 正则表达式 关于正则表达式: https://www.runoob.com/java/java-regular-expressions.html Characte ...

  2. windows 程序启动后挂到后台

    开发中遇到一个问题,程序启动后,并没有出现在前台,而是自动挂到后台,程序处于卡死状态,基本任何模块都没加载进来. 后面排查发现跟一个功能的第三方 dll 有关系,在那个 dll 加载时导致程序卡死,因 ...

  3. Acrobat 教程

    https://helpx.adobe.com/cn/acrobat/using/pdf-form-field-properties.html

  4. 项目实战:Qt+OpenCV图像处理与识别算法平台

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  5. 6大数据类型之间的转换及数据在内存中的缓存机制----day03

    1.自动类型转换 当2个不同类型的数据进行运算的时候,默认向更高精度转换 数据类型精度从低到高:bool  < int < float <complex 1,1强制类型转换 # Nu ...

  6. 从全球顶级数据库大会 SIGMOD 看数据库发展趋势

    本文来自 NebulaGraph 的软件工程师文豪在美国费城参加 2022 年 SIGMOD 大会时的见闻.SIGMOD 是数据库领域的顶级会议之一,是 CCF 数据库 / 数据挖掘 / 内容检索领域 ...

  7. 详解SSL证书系列(4)免费的SSL证书和收费的证书有什么区别

    上一篇介绍了如何选择SSL证书,更多地是从证书类型角度介绍的.SSL证书有免费和收费的,那么它们之间有什么区别呢? SSL证书免费和收费的主要区别体现在以下几个方面: 1,验证类型 免费SSL证书通常 ...

  8. 2024-03-02:用go语言,一个句子是由一些单词与它们之间的单个空格组成, 且句子的开头和结尾没有多余空格, 比方说,“Hello World“ ,“HELLO“ ,“hello world h

    2024-03-02:用go语言,一个句子是由一些单词与它们之间的单个空格组成, 且句子的开头和结尾没有多余空格, 比方说,"Hello World" ,"HELLO&q ...

  9. 青少年CTF训练平台-web部分随笔

    文章管理系统 首先打开环境(>ω<。人)ZZz♪♪ 既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来: 假flag: 打开vmware,使用sqlmap进行处理: sqlm ...

  10. Redis哨兵模式搭建

    一:哨兵主要作用 监控:监控redis主库及从库运行状态: 通知:如果redis发生故障转移,可以通过邮件通知管理员: 自动故障转移:一旦发现主库宕机,则在从库中通过选举新的master进行故障转移. ...