MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB JSON_DEPTH() Обяснено

В MariaDB, JSON_DEPTH() е вградена функция, която ви позволява да проверявате дълбочината на JSON документ.

Той приема документа JSON като аргумент и връща максималната дълбочина на документа.

Синтаксис

Синтаксисът е така:

JSON_DEPTH(json_doc)

Където json_doc е JSON документът, за който да се върне дълбочината.

Пример

Ето пример за демонстрация.

SELECT JSON_DEPTH('{ "name": "Wag" }');

Резултат:

+---------------------------------+
| JSON_DEPTH('{ "name": "Wag" }') |
+---------------------------------+
|                               2 |
+---------------------------------+

В този случай дълбочината е 2 .

Скаларни стойности и празни обекти/масиви

Скаларните стойности или празните масиви или обекти имат дълбочина 1 :

SELECT 
    JSON_DEPTH('{}'),
    JSON_DEPTH('[]'),
    JSON_DEPTH(1);

Резултат:

+------------------+------------------+---------------+
| JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) |
+------------------+------------------+---------------+
|                1 |                1 |             1 |
+------------------+------------------+---------------+

По-задълбочен JSON документ

Ето пример, който използва JSON документ с дълбочина 4 :

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_DEPTH(@json_document);

Резултат:

+----------------------------+
| JSON_DEPTH(@json_document) |
+----------------------------+
|                          4 |
+----------------------------+

Нулеви аргументи

Ако аргументът е NULL , резултатът е NULL :

SELECT JSON_DEPTH(null);

Резултат:

+------------------+
| JSON_DEPTH(null) |
+------------------+
|             NULL |
+------------------+

Невалиден JSON

Предаването на невалиден JSON води до NULL с предупреждение:

SELECT JSON_DEPTH('{1}');

Резултат:

+-------------------+
| JSON_DEPTH('{1}') |
+-------------------+
|              NULL |
+-------------------+
1 row in set, 1 warning (0.000 sec)

Нека видим предупреждението:

SHOW WARNINGS;

Резултат:

+---------+------+--------------------------------------------------------------------------------+
| Level   | Code | Message                                                                        |
+---------+------+--------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 |
+---------+------+--------------------------------------------------------------------------------+

Неправилен брой параметри

Предоставянето на без аргументи води до грешка:

SELECT JSON_DEPTH();

Резултат:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'

Същото е, когато предоставите твърде много аргументи:

SELECT JSON_DEPTH('{"a": 1}', 2);

Резултат:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Надстройките с нулев престой стават лесни с ClusterControl

  2. Как да автоматизирате Galera Cluster с помощта на ClusterControl CLI

  3. Как QUARTER() работи в MariaDB

  4. 2 начина за връщане на ASCII кода за даден знак в MariaDB

  5. Поправка:„Неизвестна таблица „локали“ в information_schema“ в MariaDB