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

MariaDB JSON_EXISTS() Objaśnienie

W MariaDB, JSON_EXISTS() to wbudowana funkcja, która pozwala sprawdzić, czy wartość istnieje w określonej ścieżce w dokumencie JSON.

Akceptuje dokument JSON jako argument i zwraca 1 jeśli ścieżka zostanie znaleziona, a 0 jeśli nie.

Dokumentacja MariaDB stwierdza, że ​​funkcja „określa, czy w danych danych istnieje określona wartość JSON”. Jednak funkcja nie wydaje się sprawdzać podanej wartości. Prawdopodobnie bardziej trafne jest stwierdzenie, że określa, czy określona ścieżka istnieje lub że pod określoną ścieżką istnieje wartość.

Do sprawdzania, czy rzeczywista wartość istnieje, możesz użyć JSON_CONTAINS() funkcja.

Składnia

Składnia wygląda tak:

JSON_EXISTS(json_doc, path)

Gdzie json_doc jest dokumentem JSON i path to droga do znalezienia.

Przykład

Oto przykład do zademonstrowania.

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.name');

Wynik:

+--------------------------------------------+
| JSON_EXISTS('{ "name": "Wag" }', '$.name') |
+--------------------------------------------+
|                                          1 |
+--------------------------------------------+

W tym przypadku ścieżka zostanie znaleziona, a wynikiem jest 1 .

Jeśli ścieżka nie zostanie znaleziona, wynik to 0 , tak:

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.type');

Wynik:

+--------------------------------------------+
| JSON_EXISTS('{ "name": "Wag" }', '$.type') |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+

Tablice

W tym przykładzie sprawdzam istnienie elementu pod danym indeksem tablicy:

SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    "$.scores[2]"
    ) AS Result;

Wynik:

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

Oto, co się stanie, jeśli indeks nie istnieje w tablicy:

SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    '$.scores[3]'
    ) AS Result;

Wynik:

+--------+
| Result |
+--------+
|      0 |
+--------+

Większy dokument JSON

Oto przykład, który używa nieco większego dokumentu JSON. Tutaj sprawdzam klucz, który istnieje na kilku poziomach zagnieżdżenia:

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_EXISTS(
    @json_document, 
    '$.details.awards.Sumo 2020'
    ) AS Result;

Wynik:

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

Argumenty zerowe

Jeśli którykolwiek z argumentów jest NULL , wynik to NULL :

SELECT 
    JSON_EXISTS(null, '$.a'),
    JSON_EXISTS('{ "a": 1 }', null);

Wynik:

+--------------------------+---------------------------------+
| JSON_EXISTS(null, '$.a') | JSON_EXISTS('{ "a": 1 }', null) |
+--------------------------+---------------------------------+
|                     NULL |                            NULL |
+--------------------------+---------------------------------+

Nieprawidłowy JSON

Przekazywanie nieprawidłowych wyników JSON w NULL :

SELECT JSON_EXISTS('{1}', '$.a');

Wynik:

+---------------------------+
| JSON_EXISTS('{1}', '$.a') |
+---------------------------+
|                      NULL |
+---------------------------+

Nieprawidłowa liczba parametrów

Brak argumentów skutkuje błędem:

SELECT JSON_EXISTS();

Wynik:

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

Tak samo jest, gdy podajesz zbyt wiele argumentów:

SELECT JSON_EXISTS('{"a": 1}', '$.a', 3);

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_SEARCH() Objaśnienie

  2. Jak TRIM_ORACLE() działa w MariaDB

  3. Jak NOT RLIKE działa w MariaDB

  4. MariaDB CURRENT_USER() Objaśnienie

  5. Jak dodać AM/PM do wartości czasu lub daty i godziny w MariaDB?