Resumo : neste tutorial, você aprenderá como usar a JSON_CONTAINS()
função MySQL para verificar se um documento JSON contém outro documento JSON.
Introdução à função JSON_CONTAINS() do MySQL
A JSON_CONTAINS()
função verifica se um documento JSON( target
) contém outro documento JSON( candidate
) em um caminho .
Aqui está a sintaxe da JSON_CONTAINS
função:
JSON_CONTAINS(target, candidate[, path])
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
target
: este é o documento JSON de destino no qual você deseja verificar a presença do documento JSON candidato.candidate
: este é o documento JSON candidato que você deseja verificar no documento JSON de destino.path
: este é o caminho dentro do documento JSON de destino onde você deseja verificar o documento JSON candidato. O argumento path é opcional.
A JSON_CONTAINS()
função retorna 1 se o documento JSON de destino contém o documento JSON candidato ou 0 caso contrário.
A JSON_CONTAINS()
função retorna NULL
se algum argumento for NULL
ou se o argumento path não identificar uma seção do documento de destino.
A função emite um erro nos seguintes casos:
- O destino ou candidato não é um documento JSON válido.
- O
path
argumento não é uma expressão de caminho válida. - O caminho contém um curinga
*
ou**
.
Exemplos de funções JSON_CONTAINS() do MySQL
Vamos explorar alguns exemplos para entender como a JSON_CONTAINS()
função funciona.
1) Verificação de valores escalares
O exemplo a seguir usa a JSON_CONTAINS()
função para verificar se o valor escalar 1 está contido em um documento JSON de destino no caminho '$.a'
:
SELECT
JSON_CONTAINS(
'{"a": 1, "b": 2, "c": {"d": 4}}',
'1', '$.a'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O resultado ocorre 1
porque o candidato ao escalar 1
está contido no documento JSON de destino no caminho especificado ‘ $.a
‘.
2) Verificando elementos do objeto
O exemplo a seguir usa a JSON_CONTAINS()
função para verificar se um objeto JSON candidato {"d": 4}
está contido no documento JSON de destino no caminho $.c
:
SELECT
JSON_CONTAINS(
'{"a": 1, "b": 2, "c": {"d": 4}}',
'{"d": 4}', '$.c'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A função retorna 1
porque o objeto JSON candidato está contido no documento JSON de destino no caminho especificado $.c
.
3) Verificando elementos do array
O exemplo a seguir usa a JSON_CONTAINS()
função para verificar se o documento JSON de destino contém a matriz JSON de destino no caminho $.numbers
:
SELECT
JSON_CONTAINS(
'{"numbers": [1, 2, 3, 4, 5], "fruits": ["apple", "banana", "cherry"]}',
'[1, 2, 3]', '$.numbers'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A função retorna 1
O resultado ocorre 1
porque a matriz JSON [1, 2, 3]
está contida no documento JSON de destino no caminho especificado $.numbers
.
Resumo
- Use a
JSON_CONTAINS()
função para verificar se um documento JSON contém outro documento JSON em um caminho especificado.