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

SQLiteJSON_QUOTE()

En SQLite, json_quote() La función convierte un número o cadena en su representación JSON correspondiente.

Proporcionamos el número o la cadena como argumento cuando llamamos a la función, y la función devuelve una representación JSON de ese valor.

Sintaxis

La sintaxis es así:

json_quote(X)

Donde X es un número o cadena.

Ejemplos

Esto es lo que sucede cuando pasamos una cadena a la función:

SELECT json_quote('Super');

Resultado:

"Super"

Y aquí hay un número:

SELECT json_quote(10.45);

Resultado:

10.45

Aquí hay una cadena que parece una matriz:

SELECT json_quote('[10.45]');

Resultado:

"[10.45]"

Aquí hay una cadena que parece un objeto:

SELECT json_quote('{ "score" : 10.45 }');

Resultado:

"{ \"score\" : 10.45 }"

Pero si pasamos el argumento en json() función, obtenemos esto:

SELECT json_quote(json('{ "score" : 10.45 }'));

Resultado:

{"score":10.45}

Valores nulos

Pasando null devuelve null :

SELECT json_quote( null );

Resultado:

null

Este es en realidad el valor de texto SQL null . Podemos verificar esto pasándolo a json_type() función:

SELECT json_type(json_quote( null ));

Resultado:

null

El json_type() La función devuelve el tipo de valor de texto SQL de su argumento. En este caso devolvió null , lo que indica que json_quote() la función devolvió null cuando pasamos null a ella.

En caso de que sospechemos que nuestra CLI de SQLite está devolviendo null debido a que se devuelve un valor nulo real, podemos hacer lo siguiente para descartarlo:

.nullvalue N/A

Eso le dice a nuestra interfaz de línea de comandos que devuelva N/A cada vez que se devuelve un valor nulo.

Después de ejecutar el comando anterior, ejecutemos las declaraciones anteriores nuevamente, así como una operación que en realidad da como resultado un valor nulo:

SELECT 
    json_quote( null ) AS json_quote,
    json_type(json_quote( null )) AS json_type,
    1 / 0 AS actual_null;

Resultado:

+------------+-----------+-------------+
| json_quote | json_type | actual_null |
+------------+-----------+-------------+
| null       | null      | N/A         |
+------------+-----------+-------------+

En SQLite, dividir un número por cero da como resultado un valor nulo (muchos otros DBMS arrojan un error en tales casos). En este ejemplo, había establecido valores nulos para devolver N/A , por lo que podemos ver que hay una diferencia entre la salida de las dos funciones y el valor nulo real. Es decir, el único valor nulo en la salida anterior está en la última columna.

Habiendo dicho todo eso, un valor nulo aún puede resultar en el valor de texto SQL null devuelto al llamar a json_quote() . Quizás un ejemplo ilustre esto mejor de lo que yo puedo explicarlo:

SELECT 
    json_quote( 1 / 0 ),
    json_type(json_quote( 1 / 0 )),
    json_type( 1 / 0 ),
    1 / 0;

Resultado:

+---------------------+--------------------------------+--------------------+-------+
| json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 |
+---------------------+--------------------------------+--------------------+-------+
| null                | null                           | N/A                | N/A   |
+---------------------+--------------------------------+--------------------+-------+

Podemos ver que las dos primeras columnas devuelven el null valor de texto SQL, y las otras dos columnas devuelven un valor nulo real.

Pasar booleanos

Aquí hay un ejemplo de cómo pasar valores booleanos como true y false :

SELECT 
    json_quote( true ) AS true,
    json_quote( false ) AS false;

Resultado:

+------+-------+
| true | false |
+------+-------+
| 1    | 0     |
+------+-------+

Recuento de argumentos no válidos

Llamar a la función sin pasar un argumento da como resultado un error:

SELECT json_quote();

Resultado:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote();
         ^--- error here

Y pasar demasiados argumentos también da como resultado un error:

SELECT json_quote( 1, 2 );

Resultado:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote( 1, 2 );
         ^--- error here