zoukankan      html  css  js  c++  java
  • Mysql 返回JSON值属性的函数 (五)

    本节中的函数返回JSON值的属性。

    • JSON_DEPTH(json_doc)

      返回JSON文档的最大深度。NULL如果参数为,则 返回 NULL如果参数不是有效的JSON文档,则会发生错误。

      一个空数组,一个空对象或标量值的深度为1。一个仅包含深度为1的元素的非空数组,或者仅包含深度为1的成员值的非空对象的深度为2。否则,一个JSON文档的深度大于2。

      mysql> SELECT JSON_DEPTH('{}'), JSON_DEPTH('[]'), JSON_DEPTH('true');
      +------------------+------------------+--------------------+
      | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH('true') |
      +------------------+------------------+--------------------+
      |                1 |                1 |                  1 |
      +------------------+------------------+--------------------+
      mysql> SELECT JSON_DEPTH('[10, 20]'), JSON_DEPTH('[[], {}]');
      +------------------------+------------------------+
      | JSON_DEPTH('[10, 20]') | JSON_DEPTH('[[], {}]') |
      +------------------------+------------------------+
      |                      2 |                      2 |
      +------------------------+------------------------+
      mysql> SELECT JSON_DEPTH('[10, {"a": 20}]');
      +-------------------------------+
      | JSON_DEPTH('[10, {"a": 20}]') |
      +-------------------------------+
      |                             3 |
      +-------------------------------+
    • JSON_LENGTH(json_doc[, path])

      返回JSON文档的长度,或者,如果提供了path参数,则返回 由路径标识的文档中值的长度。返回NULL是否有任何自变量 NULL或自path 变量不能标识文档中的值。如果json_doc参数不是有效的JSON文档,或者 path参数不是有效的路径表达式或包含*或 **通配符,则会发生错误

      文件长度确定如下:

      • 标量的长度为1。

      • 数组的长度是数组元素的数量。

      • 对象的长度是对象成员的数量。

      • 该长度不计算嵌套数组或对象的长度。

      mysql> SELECT JSON_LENGTH('[1, 2, {"a": 3}]');
      +---------------------------------+
      | JSON_LENGTH('[1, 2, {"a": 3}]') |
      +---------------------------------+
      |                               3 |
      +---------------------------------+
      mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}');
      +-----------------------------------------+
      | JSON_LENGTH('{"a": 1, "b": {"c": 30}}') |
      +-----------------------------------------+
      |                                       2 |
      +-----------------------------------------+
      mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b');
      +------------------------------------------------+
      | JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') |
      +------------------------------------------------+
      |                                              1 |
      +------------------------------------------------+
    • JSON_TYPE(json_val)

      返回utf8mb4指示JSON值类型的字符串。可以是对象,数组或标量类型,如下所示:

      mysql> SET @j = '{"a": [10, true]}';
      mysql> SELECT JSON_TYPE(@j);
      +---------------+
      | JSON_TYPE(@j) |
      +---------------+
      | OBJECT        |
      +---------------+
      mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a'));
      +------------------------------------+
      | JSON_TYPE(JSON_EXTRACT(@j, '$.a')) |
      +------------------------------------+
      | ARRAY                              |
      +------------------------------------+
      mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]'));
      +---------------------------------------+
      | JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')) |
      +---------------------------------------+
      | INTEGER                               |
      +---------------------------------------+
      mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]'));
      +---------------------------------------+
      | JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')) |
      +---------------------------------------+
      | BOOLEAN                               |
      +---------------------------------------+

      JSON_TYPE()返回 NULL参数是否为 NULL

      mysql> SELECT JSON_TYPE(NULL);
      +-----------------+
      | JSON_TYPE(NULL) |
      +-----------------+
      | NULL            |
      +-----------------+

      如果参数不是有效的JSON值,则会发生错误:

      mysql> SELECT JSON_TYPE(1);
      ERROR 3146 (22032): Invalid data type for JSON data in argument 1
      to function json_type; a JSON string or JSON type is required.

      对于NULL非错误结果,以下列表描述了可能的 JSON_TYPE()返回值:

      • 纯JSON类型:

        • OBJECT:JSON对象

        • ARRAY:JSON数组

        • BOOLEAN:JSON正确和错误文字

        • NULL:JSON空文字

      • 数值类型:

      • 时间类型:

      • 字符串类型:

      • 二进制类型:

      • 所有其他类型:

        • OPAQUE (原始位)

    • JSON_VALID(val)

      返回0或1以指示值是否为有效JSON。NULL如果参数为,则 返回NULL

       
      mysql> SELECT JSON_VALID('{"a": 1}');
      +------------------------+
      | JSON_VALID('{"a": 1}') |
      +------------------------+
      |                      1 |
      +------------------------+
      mysql> SELECT JSON_VALID('hello'), JSON_VALID('"hello"');
      +---------------------+-----------------------+
      | JSON_VALID('hello') | JSON_VALID('"hello"') |
      +---------------------+-----------------------+
      |                   0 |                     1 |
      +---------------------+-----------------------+
  • 相关阅读:
    家庭养花秘笈1000问
    生活中来3000例·健康篇
    生命的奥秘百科(套装共10册)
    海军陆战队6:太空战舰
    历史文明探秘百科(套装共10册)
    中医养生知识读本
    上工养生话刮痧
    古法艾灸
    钻井液处理剂及其作用原理
    重金属污泥处理技术与管理
  • 原文地址:https://www.cnblogs.com/guanbin-529/p/12824761.html
Copyright © 2011-2022 走看看