Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JSON_TYPE() – Obter um tipo de valor JSON no MySQL


No MySQL, o JSON_TYPE() A função retorna o tipo de um valor JSON. Mais especificamente, ele retorna um utf8mb4 string indicando o tipo do valor.

Você fornece o valor JSON como um argumento.


Sintaxe


A sintaxe fica assim:
JSON_TYPE(json_val)

Onde json_val é o valor JSON para o qual retornar o tipo. Pode ser um objeto, uma matriz ou um tipo escalar.

Exemplo 1 – Objeto


Aqui está um exemplo quando o valor é um objeto.
SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT JSON_TYPE(@data) 'JSON Type';

Resultado:
+-----------+
| JSON Type |
+-----------+
| OBJECT    |
+-----------+

Exemplo 2 – Matriz


Aqui está um exemplo de matriz.
SET @data = '[1, 2, 3]';
SELECT JSON_TYPE(@data) 'JSON Type';

Resultado:
+-----------+
| JSON Type |
+-----------+
| ARRAY     |
+-----------+

Exemplo 3 – Extrair dados de um array


Você também pode obter o tipo dos elementos individuais na matriz.
SET @data = '[1, 2, 3]';
SELECT 
  JSON_EXTRACT(@data, '$[1]') 'Data',
  JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';

Resultado:
+------+-----------+
| Data | JSON Type |
+------+-----------+
| 2    | INTEGER   |
+------+-----------+

Exemplo 4 – Extrair dados de um objeto


O mesmo se aplica aos membros de um objeto.
SET @data = '{"Name": "Homer", "Stupid": "True"}';
SELECT 
  JSON_EXTRACT(@data, '$.Stupid') 'Data',
  JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';

Resultado:
+--------+-----------+
| Data   | JSON Type |
+--------+-----------+
| "True" | STRING    |
+--------+-----------+

Nesse caso, o valor era o literal de string "True" .

Aqui está outro exemplo, mas desta vez usando o valor booleano true .
SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT 
  JSON_EXTRACT(@data, '$.Stupid') 'Data',
  JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';

Resultado:
+------+-----------+
| Data | JSON Type |
+------+-----------+
| true | BOOLEAN   |
+------+-----------+

Exemplo 5 – Consulta de banco de dados


Este exemplo usa uma coluna de banco de dados.
SELECT 
  Contents,
  JSON_TYPE(Contents) 'Contents',
  JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name'
FROM Collections 
WHERE CollectionId = 4;

Resultado:
+--------------------------------+----------+--------+
| Contents                       | Contents | Name   |
+--------------------------------+----------+--------+
| {"Name": "Homer", "Stupid": 1} | OBJECT   | STRING |
+--------------------------------+----------+--------+