MariaDB JSON_ARRAY() 函数的基础用法与实例

MariaDB JSON_ARRAY() 函数是一个用于创建一个 JSON 数组的函数。

发布于

MariaDB JSON_ARRAY() 函数是一个用于创建一个 JSON 数组的函数。它可以接受任意数量的参数,每个参数都是一个 JSON 值,作为数组的元素。该函数返回一个新的 JSON 数组,包含了所有参数的值。如果参数中有非 JSON 值,那么该函数会返回 NULL

语法

MariaDB JSON_ARRAY() 函数的语法如下:

JSON_ARRAY(val1, val2[, val3] ...)

其中:

  • val1, val2, val3 … 是 JSON 值,可以是一个基本类型(如字符串,数字,布尔值,NULL),也可以是一个复合类型(如对象,数组)。

实例

下面是一些使用 MariaDB JSON_ARRAY() 函数的实例。

创建一个简单的 JSON 数组

我们可以使用 MariaDB JSON_ARRAY() 函数,创建一个包含三个字符串的 JSON 数组,表示一个水果的列表:

SELECT JSON_ARRAY('apple', 'banana', 'cherry') AS result;

运行结果如下:

["apple", "banana", "cherry"]

创建一个嵌套的 JSON 数组

我们可以使用 MariaDB JSON_ARRAY() 函数,创建一个包含两个 JSON 对象的 JSON 数组,表示两个人的信息:

SELECT JSON_ARRAY('{"name": "Alice", "age": 18}', '{"name": "Bob", "age": 19}') AS result;

运行结果如下:

["{\"name\": \"Alice\", \"age\": 18}", "{\"name\": \"Bob\", \"age\": 19}"]

注意,JSON_ARRAY 将两个参数当作字符串处理,如果需要将其作为 JSON 对象,请使用 JSON_OBJECT() 行数将其转为 JSON 对象,如下:

SELECT JSON_ARRAY(
  JSON_OBJECT('name', 'Alice', 'age', 18),
  JSON_OBJECT('name', 'Bob', 'age', 19)
) AS result;

运行结果如下:

[{"name": "Alice", "age": 18}, {"name": "Bob", "age": 19}]

创建一个包含不同类型的 JSON 数组

我们可以使用 MariaDB JSON_ARRAY() 函数,创建一个包含不同类型的 JSON 值的 JSON 数组,比如字符串,数字,布尔值,NULL,对象,数组:

SELECT JSON_ARRAY('hello', 42, true, NULL, '{"foo": "bar"}', '[1, 2, 3]') AS result;

运行结果如下:

["hello", 42, true, null, "{\"foo\": \"bar\"}", "[1, 2, 3]"]

这是因为日期不是一个有效的 JSON 值,所以该函数返回 NULL

创建一个空的 JSON 数组

我们可以使用 MariaDB JSON_ARRAY() 函数,不传入任何参数,创建一个空的 JSON 数组:

SELECT JSON_ARRAY() AS result;

运行结果如下:

[]

相关函数

MariaDB JSON_ARRAY() 函数与以下函数有一定的关联:

  • JSON_ARRAY_APPEND() 函数:用于向 JSON 数组中追加元素,接受多个参数,每个参数都是一个键值对,表示要追加的位置和值。该函数返回一个新的 JSON 数组,包含了追加后的元素。
  • JSON_ARRAY_INSERT() 函数:用于向 JSON 数组中插入元素,接受多个参数,每个参数都是一个键值对,表示要插入的位置和值。该函数返回一个新的 JSON 数组,包含了插入后的元素。
  • JSON_ARRAY_INTERSECT() 函数:用于计算多个 JSON 数组的交集的函数。它可以接受任意数量的参数,每个参数都是一个 JSON 数组。该函数返回一个新的 JSON 数组,包含了所有参数数组中共有的元素。如果参数中有非数组的值,或者没有任何共有的元素,那么该函数会返回 NULL

结论

MariaDB JSON_ARRAY() 函数是一个用于创建一个 JSON 数组的函数。它可以接受任意数量的参数,每个参数都是一个 JSON 值,作为数组的元素。该函数返回一个新的 JSON 数组,包含了所有参数的值。如果参数中有非 JSON 值,那么该函数会返回 NULL。该函数可以用于对 JSON 数据进行灵活的构造,增加其可读性和可维护性。