JSON_LENGTH()¶
JSON_LENGTH() 返回 JSON 文档的长度。对于 JSON 对象,长度为成员数;对于 JSON 数组,长度为元素数;对于标量 JSON 值,长度为 1。可选路径参数可指定嵌套值。
函数说明¶
JSON_LENGTH() 统计 JSON 文档中的元素:
JSON 对象:返回顶层键值对的数量。
JSON 数组:返回元素的数量。
JSON 标量(
"string"、42、true、false、null):返回 1。不存在的路径:返回
NULL。NULL参数:返回NULL。
提供路径参数时,函数评估路径并返回该位置值的长度。路径处的标量 JSON 值返回 1。
Syntax¶
> JSON_LENGTH(json_doc [, path])
Arguments¶
参数 |
说明 |
|---|---|
json_doc |
必填。一个 JSON 文档(字符串、JSON 列或 JSON 函数的结果)。 |
path |
可选。指定嵌套值的 JSON 路径表达式,用于测量其长度。 |
Examples¶
DROP DATABASE IF EXISTS dbfuncs;
CREATE DATABASE dbfuncs;
USE dbfuncs;
-- NULL 输入返回 NULL
SELECT JSON_LENGTH(NULL);
-- 对象:键值对的数量
SELECT JSON_LENGTH('{}');
SELECT JSON_LENGTH('{"a":1,"b":2}');
-- 数组:元素的数量
SELECT JSON_LENGTH('[]');
SELECT JSON_LENGTH('[1,2,3]');
-- 标量值均返回 1
SELECT JSON_LENGTH('true');
SELECT JSON_LENGTH('false');
SELECT JSON_LENGTH('null');
SELECT JSON_LENGTH('"hello"');
SELECT JSON_LENGTH('42');
-- 嵌套路径
SELECT JSON_LENGTH('{"a":{"b":[1,2,3]}}', '$.a.b');
-- 不存在的成员路径
SELECT JSON_LENGTH('{"a":1}', '$.x');
-- 带 JSON 列的表
CREATE TABLE t_json_len (id INT PRIMARY KEY, payload JSON);
INSERT INTO t_json_len VALUES (1, '{"meta":{"level":{"nested":{"value":{"deep":"2924"}},"flag":true}}}');
SELECT id, JSON_LENGTH(payload) FROM t_json_len;
DROP TABLE t_json_len;
DROP DATABASE dbfuncs;