Resumo : neste tutorial, você aprenderá como usar o MEMBER OF
operador MySQL que determina se um valor é um elemento de um array JSON.
Introdução ao operador MySQL MEMBER OF
O MEMBER OF
operador retorna verdadeiro (1) se um valor for um elemento de uma matriz JSON ou falso (0) caso contrário.
Aqui está a sintaxe do MEMBER OF
operador:
value MEMBER OF (json_array)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
value
: este é o valor que pode ser um documento escalar ou JSON.json_array
: este é o array JSON do qual você deseja verificar se o valor é um elemento.
A função retorna NULL
se value
ou json_array
for NULL
.
Exemplos de operadores MySQL MEMBER OF
Vejamos alguns exemplos de uso do MEMBER OF
operador.
1) Exemplos básicos de operadores MEMBER OF
O exemplo a seguir usa o MEMBER OF
operador para verificar se o número 1 é um elemento de um array JSON [1,2,3]
:
SELECT
1 MEMBER OF('[1,2,3]') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.01 sec)
Linguagem de código: JavaScript ( javascript )
O exemplo a seguir usa o MEMBER OF
operador para verificar se o número 4 é um elemento de um array JSON [1,2,3]
:
SELECT
4 MEMBER OF('[1,2,3]') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------+
| result |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
2) Conversão de valor
O MEMBER OF
operador não realiza conversão durante a verificação. Por exemplo:
SELECT
'1' MEMBER OF('[1,2,3]') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como a string '1'
não está no array de números [1,2,3]
, o MEMBER OF
operador retorna 0:
+--------+
| result |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Observe que o MEMBER OF
operador não realiza uma conversão de tipo para a string.
Nesse caso, você pode usar CAST
para converter a string '1'
em número 1
ao verificar assim:
SELECT
CAST('1' AS UNSIGNED) MEMBER OF('[1,2,3]') result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Agora o operador retorna verdadeiro porque o número 1 é membro da matriz JSON
+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
3) Verificando um documento JSON
As seguintes tentativas de verificar se um objeto é membro de uma matriz:
SELECT
'{"name": "John"}' MEMBER OF (
'[{ "name" : "John" }, { "name" : "Joe" }]'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ele retorna falso porque a função trata '{"name": "John"}'
como uma string, não como um objeto JSON:
+--------+
| result |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Para fazer isso, você precisa converter a string em JSON antes de passá-la ao MEMBER
OF
operador:
SELECT
CAST('{"name": "John"}' AS JSON) MEMBER OF (
'[{ "name" : "John" }, { "name" : "Joe" }]'
) 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: JavaScript ( javascript )
Resumo
- Use o
MEMBER OF
operador que determina se um valor é um elemento de uma matriz JSON.