sql >> Base de Datos >  >> RDS >> SQLite

SQLiteJSON_TYPE()

El SQLite json_type() La función devuelve el tipo del elemento más externo del JSON dado.

Proporcionamos el JSON como argumento cuando llamamos a la función.

Opcionalmente, podemos pasar una ruta, lo que nos permite obtener el tipo de un elemento de matriz específico o un miembro de objeto dentro del JSON.

Sintaxis

Podemos usar la función de las siguientes maneras:

json_type(X)
json_type(X,P)

Donde X representa el JSON y P es un argumento opcional que representa la ruta para obtener el tipo de.

La función devuelve uno de los siguientes valores de texto SQL: null , true , false , integer , real , text , array , o object .

Ejemplo

Aquí hay un ejemplo para demostrar cómo funciona:

SELECT json_type('{ "name" : "Fluffy", "age" : 10 }');

Resultado:

object

Aquí solo proporcioné el JSON, no proporcioné una ruta. En este caso, el JSON más externo es un objeto.

Aquí hay una matriz:

SELECT json_type('[ 1, 2, 3 ]');

Resultado:

array

Incluso podemos hacer cosas como esta:

SELECT json_type(10.45);

Resultado:

real

En este caso, mi argumento no es en realidad un objeto o matriz JSON, sino json_type() fue capaz de devolver su tipo de todos modos.

Especifique una ruta

Esto es lo que sucede cuando especificamos una ruta:

SELECT json_type('{ "name" : "Fluffy", "age" : 10 }', '$.age');

Resultado:

integer

En este caso, especifiqué una ruta de $.age , que dio como resultado el tipo de age miembro que se devuelve.

Obtengamos el tipo de name miembro:

SELECT json_type('{ "name" : "Fluffy", "age" : 10 }', '$.name');

Resultado:

text

Hagámoslo en una matriz:

SELECT json_type('[ "Wag", 2, 1.5, null, true, false ]', '$[0]');

Resultado:

text

Eso obtuvo el tipo del primer elemento (las matrices SQLite están basadas en cero, por lo que 0 es para el primer elemento).

Obtengamos los tipos de todos los elementos en la matriz:

SELECT 
    json_type('[ "Wag", 2, 1.5, null, true, false  ]', '$[0]') AS "0",
    json_type('[ "Wag", 2, 1.5, null, true, false  ]', '$[1]') AS "1",
    json_type('[ "Wag", 2, 1.5, null, true, false  ]', '$[2]') AS "2",
    json_type('[ "Wag", 2, 1.5, null, true, false  ]', '$[3]') AS "3",
    json_type('[ "Wag", 2, 1.5, null, true, false  ]', '$[4]') AS "4",
    json_type('[ "Wag", 2, 1.5, null, true, false  ]', '$[5]') AS "5";

Resultado:

+------+---------+------+------+------+-------+
|  0   |    1    |  2   |  3   |  4   |   5   |
+------+---------+------+------+------+-------+
| text | integer | real | null | true | false |
+------+---------+------+------+------+-------+