MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB JSON_LENGTH() Objaśnienie

W MariaDB, JSON_LENGTH() to wbudowana funkcja, która zwraca długość dokumentu JSON.

Gdy wywołujesz tę funkcję, podajesz dokument JSON jako argument. Możesz również podać argument ścieżki, aby zwrócić długość wartości w dokumencie.

Długość określa się w następujący sposób:

  • Długość skalara wynosi zawsze 1.
  • Jeśli tablica, liczba elementów w tablicy.
  • Jeśli obiekt, liczba członków w obiekcie.

Długość zagnieżdżonych tablic lub obiektów nie jest liczona.

Składnia

Składnia wygląda tak:

JSON_LENGTH(json_doc[, path])

Gdzie json_doc jest dokumentem JSON i path jest opcjonalnym argumentem, który określa ścieżkę w dokumencie.

Przykład

Oto przykład do zademonstrowania.

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_LENGTH(@json_document);

Wynik:

+-----------------------------+
| JSON_LENGTH(@json_document) |
+-----------------------------+
|                           3 |
+-----------------------------+

Określanie ścieżki

Oto przykład określenia ścieżki w dokumencie:

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

Wynik:

+------------------------------------------+
| JSON_LENGTH(@json_document, '$.details') |
+------------------------------------------+
|                                        2 |
+------------------------------------------+

Jak wspomniano, nie zlicza długości zagnieżdżonych obiektów, więc otrzymujemy wynik 2 .

Następny przykład idzie w dół i zlicza długość awards obiekt:

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

Wynik:

+-------------------------------------------------+
| JSON_LENGTH(@json_document, '$.details.awards') |
+-------------------------------------------------+
|                                               3 |
+-------------------------------------------------+

Skalary

Długość skalara to zawsze 1 :

SELECT JSON_LENGTH( 
    '{ "a" : 378, "b" : 45 }', 
    '$.a' 
    ) AS Result;

Wynik:

+--------+
| Result |
+--------+
|      1 |
+--------+

Tablice

Jeśli dokument jest tablicą, JSON_LENGTH() zlicza liczbę elementów w tablicy:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "scores": [9, 7, 8, 10, 3] 
    }
';
SELECT JSON_LENGTH(@json_document, '$.scores');

Wynik:

+-----------------------------------------+
| JSON_LENGTH(@json_document, '$.scores') |
+-----------------------------------------+
|                                       5 |
+-----------------------------------------+

Nieistniejące ścieżki

Przekazanie ścieżki, która nie istnieje w dokumencie JSON, daje w wyniku NULL .

Przykład:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog"
    }
';
SELECT JSON_LENGTH(@json_document, '$.oops');

Wynik:

+---------------------------------------+
| JSON_LENGTH(@json_document, '$.oops') |
+---------------------------------------+
|                                  NULL |
+---------------------------------------+

Puste obiekty

Jeśli wybrany obiekt jest pusty, wynikiem jest 0 :

SELECT JSON_LENGTH('{}');

Wynik:

+-------------------+
| JSON_LENGTH('{}') |
+-------------------+
|                 0 |
+-------------------+

Argumenty zerowe

Jeśli jakikolwiek argument ma wartość NULL , wynik to NULL :

SELECT 
    JSON_LENGTH(null) AS a,
    JSON_LENGTH(null, '$.type') AS b,
    JSON_LENGTH('{"a":1}', null) AS c;

Wynik:

+------+------+------+
| a    | b    | c    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Nieprawidłowa liczba parametrów

Brak argumentów skutkuje błędem:

SELECT JSON_LENGTH();

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa DEGREES() w MariaDB

  2. Jak działa SLEEP() w MariaDB

  3. MariaDB DATABASE() Objaśnienie

  4. Pełne szyfrowanie MariaDB w spoczynku i podczas przesyłania w celu maksymalnej ochrony danych — część pierwsza

  5. Jak działa QUARTER() w MariaDB