JSON_ARRAY()

JSON_ARRAY() 对(可能为空的)值列表进行求值,并返回包含这些值的 JSON 数组。支持所有 MatrixOne 数据类型,包括数值、字符串、时间、UUID、JSON、向量、二进制、bit、enum 和 year 类型。

函数说明

JSON_ARRAY() 接收零个或多个参数并返回一个 JSON 数组。每个参数会转换为其 JSON 表示形式:

  • NULL 值变为 JSON null

  • 数值类型(INTBIGINTFLOATDOUBLEDECIMAL)变为 JSON 数字。

  • 布尔值变为 JSON truefalse

  • 字符串类型(CHARVARCHARTEXT)变为 JSON 字符串。

  • 时间类型(DATETIMEDATETIMETIMESTAMP)变为 JSON 字符串。

  • UUID 值变为 JSON 字符串。

  • JSON 值直接嵌入。

  • VECF32VECF64 向量变为 JSON 数字数组。

  • BITYEARENUMBINARYVARBINARY 类型转换为其字符串表示形式。

不带参数调用 JSON_ARRAY() 返回空 JSON 数组 []

Syntax

> JSON_ARRAY([val [, val] ...])

Arguments

参数

说明

val

可选。一个或多个要包含在数组中的值。每个值转换为其 JSON 表示形式。

Examples

DROP DATABASE IF EXISTS dbfuncs;
CREATE DATABASE dbfuncs;
USE dbfuncs;

-- 空数组
SELECT JSON_ARRAY();

-- 简单值
SELECT JSON_ARRAY(1, 2, 3);
SELECT JSON_ARRAY(1, 'abc', NULL, true);
SELECT JSON_ARRAY('hello', 'world');

-- 时间类型
SELECT JSON_ARRAY(CAST('2021-02-01' AS DATE), CAST('11:11:11' AS TIME), CAST('2021-02-01 11:11:11' AS DATETIME));

-- Decimal 类型
SELECT JSON_ARRAY(CAST(12345.67 AS DECIMAL(10,2)), CAST(9876.54321 AS DECIMAL(30,10)));

-- UUID
SELECT JSON_ARRAY(CAST('550e8400-e29b-41d4-a716-446655440000' AS UUID));

-- 向量类型
SELECT JSON_ARRAY(CAST('[1.0,2.0,3.0]' AS VECF32(3)));
SELECT JSON_ARRAY(CAST('[1.5,2.5,3.5]' AS VECF64(3)));

-- 来自其他 JSON 函数的嵌套 JSON
SELECT JSON_ARRAY(JSON_EXTRACT('{"a":1}', '$.a'), JSON_EXTRACT('{"b":2}', '$.b'));

-- BIT 和 YEAR 类型
SELECT JSON_ARRAY(CAST(1 AS BIT(1)), CAST(0 AS BIT(1)));
SELECT JSON_ARRAY(CAST('2021' AS YEAR), CAST('1999' AS YEAR));

-- 基于表的示例
CREATE TABLE jat (
    id INT,
    b BOOL, bi BIGINT, f FLOAT, d DOUBLE,
    d64 DECIMAL(10, 3), d128 DECIMAL(30, 10),
    vc VARCHAR(100), t TEXT,
    td DATE, tt TIME, tdt DATETIME,
    uid UUID, js JSON,
    vf32 VECF32(3), vf64 VECF64(3)
);
INSERT INTO jat VALUES
(1, true, 11111111111111, 0.1, 0.2222222, 3.14, 3.14159265359,
 'vvvv', 'tttttttt',
 '2021-02-01', '11:11:11', '2021-02-01 11:11:11',
 '550e8400-e29b-41d4-a716-446655440000',
 '{"a": 1, "b": [1, 2, 3], "c": {"d": "hello"}}',
 CAST('[1.0,2.0,3.0]' AS VECF32(3)), CAST('[1.5,2.5,3.5]' AS VECF64(3)))
;

SELECT id, JSON_ARRAY(id, b, bi, f, d, d64, d128, vc, t, td, tt, tdt, uid, js, vf32, vf64) FROM jat;

DROP TABLE jat;
DROP DATABASE dbfuncs;

参见