Mysql
 sql >> Database >  >> RDS >> Mysql

JSON_CONTAINS_PATH() Esempi in MySQL

In MySQL, il JSON_CONTAINS_PATH() la funzione verifica se un percorso specificato viene trovato o meno nel documento JSON specificato.

Se viene trovato il percorso, JSON_CONTAINS_PATH() restituisce 1 , altrimenti restituisce 0 .

Sintassi

La sintassi è questa:

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)

Dove json_doc è il documento JSON, one_or_all è la parola chiave one o all (per indicare se è necessario un solo percorso o devono esistere tutti i percorsi prima di restituire 1 ), e path è il percorso effettivo.

Esempio 1 – Utilizzo di base

Ecco un esempio per dimostrare l'utilizzo di base.

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a') AS Result;

Risultato:

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

Il percorso $.a esiste nel documento JSON e, pertanto, il risultato è 1 . Abbiamo usato one come secondo argomento, ma in questo caso otterremmo lo stesso risultato se avessimo specificato all .

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a') AS Result;

Risultato:

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

Se specifichiamo un percorso che non esiste otteniamo 0 . Esempio:

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.z') AS Result;

Risultato:

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

Esempio 2 – Percorsi multipli

Negli esempi seguenti specifichiamo due percorsi.

Nel primo esempio, esiste un percorso ma l'altro no. Ma perché io uso one come secondo argomento, il risultato è positivo (perché esiste almeno uno dei percorsi).

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a', '$.z') AS Result;

Risultato:

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

Se cambiamo one a all otteniamo un risultato negativo.

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a', '$.z') AS Result;

Risultato:

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

Questo perché all la parola chiave richiede che tutti i percorsi debbano esistere nel documento JSON prima di restituire un 1 .

Esempio 3 – Notazione del punto

Puoi utilizzare la notazione a punti per indicare percorsi specifici all'interno del documento JSON.

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c.d') AS Result;

Risultato:

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

Esempio 4 – Matrici

Ecco un paio di esempi di array.

Il primo esempio restituisce un risultato positivo.

SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[0]') AS Result;

Risultato:

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

L'esempio successivo restituisce un risultato negativo.

SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[3]') AS Result;

Risultato:

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

Restituisce negativo perché le matrici utilizzano la numerazione in base zero. Pertanto, il percorso $.c[3] rappresenta il quarto elemento, ma l'array contiene solo tre elementi.