sql >> Databasteknik >  >> RDS >> SQLite

SQLite JSON_QUOTE()

I SQLite, json_quote() funktion konverterar ett tal eller en sträng till dess motsvarande JSON-representation.

Vi anger numret eller strängen som ett argument när vi anropar funktionen, och funktionen returnerar en JSON-representation av det värdet.

Syntax

Syntaxen ser ut så här:

json_quote(X)

Där X är ett tal eller en sträng.

Exempel

Så här händer när vi skickar en sträng till funktionen:

SELECT json_quote('Super');

Resultat:

"Super"

Och här är ett nummer:

SELECT json_quote(10.45);

Resultat:

10.45

Här är en sträng som ser ut som en array:

SELECT json_quote('[10.45]');

Resultat:

"[10.45]"

Här är en sträng som ser ut som ett objekt:

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

Resultat:

"{ \"score\" : 10.45 }"

Men om vi skickar argumentet i json() funktion får vi detta:

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

Resultat:

{"score":10.45}

Nullvärden

Skickar null returnerar null :

SELECT json_quote( null );

Resultat:

null

Detta är faktiskt SQL-textvärdet null . Vi kan verifiera detta genom att skicka det till json_type() funktion:

SELECT json_type(json_quote( null ));

Resultat:

null

json_type() funktion returnerar SQL-textvärdetypen för dess argument. I det här fallet returnerade den null , vilket indikerar att json_quote() funktion returnerade null när vi passerade null till det.

Om vi ​​misstänker att vår SQLite CLI returnerar null på grund av att ett faktiskt nollvärde returneras kan vi göra följande för att utesluta det:

.nullvalue N/A

Det säger till vårt kommandoradsgränssnitt att returnera N/A närhelst ett nollvärde returneras.

Efter att ha kört kommandot ovan, låt oss köra de tidigare satserna igen, såväl som en operation som faktiskt resulterar i ett nullvärde:

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

Resultat:

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

I SQLite, att dividera ett tal med noll resulterar i ett nollvärde (många andra DBMS ger ett fel i sådana fall). I det här exemplet hade jag ställt in nullvärden för att returnera N/A , och så kan vi se att det finns en skillnad mellan utdata från de två funktionerna och det faktiska nollvärdet. Det vill säga, det enda nollvärdet i ovanstående utdata finns i den sista kolumnen.

Med allt detta sagt kan ett nullvärde fortfarande resultera i SQL-textvärdet null returneras när json_quote() anropas . Kanske ett exempel illustrerar detta bättre än jag kan förklara det:

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

Resultat:

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

Vi kan se att de två första kolumnerna returnerar null SQL-textvärde och de andra två kolumnerna returnerar ett verkligt nullvärde.

Godkänd boolean

Här är ett exempel på att skicka booleaner som true och false :

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

Resultat:

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

Ogiltigt antal argument

Att anropa funktionen utan att skicka ett argument resulterar i ett fel:

SELECT json_quote();

Resultat:

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

Och att skicka för många argument resulterar också i ett fel:

SELECT json_quote( 1, 2 );

Resultat:

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

  1. LÖST:Microsoft Office 365 version 2009 kan bryta din databasapplikation

  2. Flera uppdateringar i MySQL

  3. Returnera en lista över främmande nycklar i SQLite

  4. finns det en PRODUKT-funktion som det finns en SUM-funktion i Oracle SQL?