sql >> Base de Datos >  >> RDS >> Mysql

JSON_TYPE() – Obtenga un tipo de valor JSON en MySQL

En MySQL, JSON_TYPE() La función devuelve el tipo de un valor JSON. Más específicamente, devuelve un utf8mb4 cadena que indica el tipo de valor.

Proporcionas el valor JSON como argumento.

Sintaxis

La sintaxis es así:

JSON_TYPE(json_val)

Donde json_val es el valor JSON para el que devolver el tipo. Puede ser un objeto, una matriz o un tipo escalar.

Ejemplo 1 – Objeto

Aquí hay un ejemplo cuando el valor es un objeto.

SET @data = '{"Name": "Homer", "Stupid": true}';
SELECT JSON_TYPE(@data) 'JSON Type';

Resultado:

+-----------+
| JSON Type |
+-----------+
| OBJECT    |
+-----------+

Ejemplo 2:matriz

Aquí hay un ejemplo de matriz.

SET @data = '[1, 2, 3]';
SELECT JSON_TYPE(@data) 'JSON Type';

Resultado:

+-----------+
| JSON Type |
+-----------+
| ARRAY     |
+-----------+

Ejemplo 3:extraer datos de una matriz

También puede obtener el tipo de los elementos individuales en la 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   |
+------+-----------+

Ejemplo 4:extraer datos de un objeto

Lo mismo se aplica a los miembros de un 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    |
+--------+-----------+

En ese caso, el valor era el literal de cadena "True" .

Aquí hay otro ejemplo, pero esta vez usando el 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   |
+------+-----------+

Ejemplo 5:consulta de base de datos

Este ejemplo usa una columna de base de datos.

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 |
+--------------------------------+----------+--------+