SQLite
 sql >> база данни >  >> RDS >> SQLite

SQLite JSON_QUOTE()

В SQLite, json_quote() функцията преобразува число или низ в съответното му JSON представяне.

Ние предоставяме числото или низа като аргумент, когато извикаме функцията и функцията връща JSON представяне на тази стойност.

Синтаксис

Синтаксисът е така:

json_quote(X)

Където X е число или низ.

Примери

Ето какво се случва, когато предадем низ на функцията:

SELECT json_quote('Super');

Резултат:

"Super"

А ето и число:

SELECT json_quote(10.45);

Резултат:

10.45

Ето низ, който изглежда като масив:

SELECT json_quote('[10.45]');

Резултат:

"[10.45]"

Ето низ, който изглежда като обект:

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

Резултат:

"{ \"score\" : 10.45 }"

Но ако предадем аргумента в json() функция, получаваме това:

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

Резултат:

{"score":10.45}

Нулеви стойности

Предаването на null връща null :

SELECT json_quote( null );

Резултат:

null

Това всъщност е текстовата стойност на SQL null . Можем да проверим това, като го предадем на json_type() функция:

SELECT json_type(json_quote( null ));

Резултат:

null

json_type() функцията връща типа текстова стойност на SQL на своя аргумент. В този случай той върна null , което показва, че json_quote() функцията върна null когато предадохме null към него.

В случай, че подозираме, че нашият SQLite CLI връща null поради връщане на действителна нулева стойност, можем да направим следното, за да изключим това:

.nullvalue N/A

Това казва на нашия интерфейс на командния ред да върне N/A всеки път, когато се върне нулева стойност.

След като изпълним горната команда, нека изпълним отново предишните изрази, както и операция, която всъщност води до нулева стойност:

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

Резултат:

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

В SQLite, разделянето на число на нула води до нулева стойност (много други СУБД издават грешка в такива случаи). В този пример бях задал нулеви стойности, за да върна N/A , и така можем да видим, че има разлика между изхода на двете функции и действителната нулева стойност. Тоест единствената нулева стойност в горния изход е в последната колона.

След като казахме всичко това, нулева стойност все още може да доведе до текстовата стойност на SQL null се връща при извикване на json_quote() . Може би един пример илюстрира това по-добре, отколкото мога да го обясня:

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

Резултат:

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

Можем да видим, че първите две колони връщат null SQL текстова стойност, а другите две колони връщат действителна нулева стойност.

Предаване на булеви стойности

Ето пример за предаване на булеви стойности като true и false :

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

Резултат:

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

Невалиден брой аргументи

Извикването на функцията без предаване на аргумент води до грешка:

SELECT json_quote();

Резултат:

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

И предаването на твърде много аргументи също води до грешка:

SELECT json_quote( 1, 2 );

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се обвърже аргумент в индекс 2, защото индексът е извън обхвата

  2. Не може да се актуализира ред в Sqlite в Android, но не се появява грешка

  3. Грешка в Android SQLite:номерът на променливата трябва да е между ?1 и ?999

  4. 6 начина за изтриване на дублиращи се редове, които имат първичен ключ в SQLite

  5. Трябва ли да има един SQLiteOpenHelper за всяка таблица в базата данни?