JSON_LENGTH

JSON_LENGTH函数用于返回指定路径下的JSON数据的长度。

命令格式

BIGINT JSON_LENGTH(JSON <json> [, STRING <json_path>])

-- 标准示例。
-- 返回2。
SELECT JSON_LENGTH(JSON '{"k1":"v31","k2":300}');

参数说明

  • json: 必填。需要检查长度的 JSON数据。JSON类型。

  • json_path:可选。指定JSON路径。STRING类型。若未指定,默认返回整个JSON数据的长度。

返回值说明

返回BIGINT类型。返回规则如下:

  • json是一个JSON ARRAY,则返回值为数组中的元素数量。

  • json是一个JSON OBJECT,则返回值为对象中的成员数量。

  • json数据为JSON ARRAYJSON OBJECT以外的类型,均返回1。

  • jsonjson_pathnull时,返回null。

  • 该函数不考虑嵌套数组或对象的长度。

使用示例

  • 示例1:基本示例。

    -- 返回2。
    SELECT JSON_LENGTH(JSON '{"k1":"v31","k2":300}');
    
    -- 返回6。
    SELECT JSON_LENGTH(JSON '[1,2,3,4,5,6]');
    
    -- 返回3。不考虑嵌套数组或对象的长度。
    SELECT 
      JSON_LENGTH(
        JSON '{"name": "John", "age": 22, "skills":["PHP","MySQL","JavaScript"]}'
      );
    
    -- 返回2。
    SELECT JSON_LENGTH(JSON '{"x": 1, "y": [1, 2]}', '$.y');
    
    -- 返回null。
    SELECT JSON_LENGTH(null);
  • 示例2:json数据为JSON ARRAYJSON OBJECT以外的类型,均返回1。

    -- 返回1。
    SELECT JSON_LENGTH(JSON 'null');
    
    -- 返回1。
    SELECT JSON_LENGTH(JSON '123');
    
    -- 返回1。
    SELECT JSON_LENGTH(JSON '123.34');
    
    -- 返回1。
    SELECT JSON_LENGTH(JSON 'true');

相关函数

JSON_LENGTH函数属于JSON函数,更多JSON类型函数请参见JSON函数