No SQLite, o
json_quote() A função converte um número ou string em sua representação JSON correspondente. Fornecemos o número ou a string como um argumento quando chamamos a função e a função retorna uma representação JSON desse valor.
Sintaxe
A sintaxe fica assim:
json_quote(X) Onde
X é um número ou string. Exemplos
Aqui está o que acontece quando passamos uma string para a função:
SELECT json_quote('Super'); Resultado:
"Super"
E aqui está um número:
SELECT json_quote(10.45); Resultado:
10.45
Aqui está uma string que se parece com um array:
SELECT json_quote('[10.45]'); Resultado:
"[10.45]"
Aqui está uma string que se parece com um objeto:
SELECT json_quote('{ "score" : 10.45 }'); Resultado:
"{ \"score\" : 10.45 }" Mas se passarmos o argumento no
json() função, obtemos isso:SELECT json_quote(json('{ "score" : 10.45 }')); Resultado:
{"score":10.45} Valores nulos
Passando
null retorna null :SELECT json_quote( null ); Resultado:
null
Este é realmente o valor do texto SQL
null . Podemos verificar isso passando para o json_type() função:SELECT json_type(json_quote( null )); Resultado:
null
O
json_type() A função retorna o tipo de valor de texto SQL de seu argumento. Neste caso retornou null , que indica que o json_quote() função retornou null quando passamos null para isso. Caso suspeitemos que nossa CLI SQLite está retornando
null devido a um valor nulo real sendo retornado, podemos fazer o seguinte para descartar isso:.nullvalue N/A Isso diz à nossa interface de linha de comando para retornar
N/A sempre que um valor nulo é retornado. Tendo executado o comando acima, vamos executar as instruções anteriores novamente, bem como uma operação que realmente resulta em um 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 | +------------+-----------+-------------+
No SQLite, dividir um número por zero resulta em um valor nulo (muitos outros DBMSs geram um erro nesses casos). Neste exemplo, eu configurei valores nulos para retornar
N/A , e assim podemos ver que há uma diferença entre a saída das duas funções e o valor nulo real. Ou seja, o único valor nulo na saída acima está na última coluna. Dito tudo isso, um valor nulo ainda pode resultar no valor de texto SQL
null sendo retornado ao chamar json_quote() . Talvez um exemplo ilustre isso melhor do que eu possa explicar: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 as duas primeiras colunas retornam o
null Valor de texto SQL e as outras duas colunas retornam um valor nulo real. Passando booleanos
Aqui está um exemplo de passagem de booleanos como
true e false :SELECT
json_quote( true ) AS true,
json_quote( false ) AS false; Resultado:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Contagem de argumentos inválida
Chamar a função sem passar um argumento resulta em um erro:
SELECT json_quote(); Resultado:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote();
^--- error here E passar muitos argumentos também resulta em um erro:
SELECT json_quote( 1, 2 ); Resultado:
Parse error: wrong number of arguments to function json_quote()
SELECT json_quote( 1, 2 );
^--- error here