Dalam SQLite, json_quote()
fungsi mengubah angka atau string menjadi representasi JSON yang sesuai.
Kami memberikan nomor atau string sebagai argumen saat kami memanggil fungsi, dan fungsi mengembalikan representasi JSON dari nilai itu.
Sintaks
Sintaksnya seperti ini:
json_quote(X)
Dimana X
adalah angka atau string.
Contoh
Inilah yang terjadi ketika kita meneruskan string ke fungsi:
SELECT json_quote('Super');
Hasil:
"Super"
Dan ini nomornya:
SELECT json_quote(10.45);
Hasil:
10.45
Berikut adalah string yang terlihat seperti array:
SELECT json_quote('[10.45]');
Hasil:
"[10.45]"
Berikut adalah string yang terlihat seperti objek:
SELECT json_quote('{ "score" : 10.45 }');
Hasil:
"{ \"score\" : 10.45 }"
Tetapi jika kita meneruskan argumen di json()
fungsi, kita mendapatkan ini:
SELECT json_quote(json('{ "score" : 10.45 }'));
Hasil:
{"score":10.45}
Nilai Null
Melewati null
mengembalikan null
:
SELECT json_quote( null );
Hasil:
null
Ini sebenarnya adalah nilai teks SQL null
. Kami dapat memverifikasi ini dengan meneruskannya ke json_type()
fungsi:
SELECT json_type(json_quote( null ));
Hasil:
null
json_type()
function mengembalikan tipe nilai teks SQL dari argumennya. Dalam hal ini mengembalikan null
, yang menunjukkan bahwa json_quote()
fungsi mengembalikan null
ketika kami melewati null
untuk itu.
Jika kami menduga bahwa SQLite CLI kami mengembalikan null
karena nilai null yang sebenarnya dikembalikan, kita dapat melakukan hal berikut untuk mengesampingkannya:
.nullvalue N/A
Itu memberitahu antarmuka baris perintah kita untuk mengembalikan N/A
setiap kali nilai nol dikembalikan.
Setelah menjalankan perintah di atas, mari kita jalankan kembali pernyataan sebelumnya, serta operasi yang benar-benar menghasilkan nilai null:
SELECT
json_quote( null ) AS json_quote,
json_type(json_quote( null )) AS json_type,
1 / 0 AS actual_null;
Hasil:
+------------+-----------+-------------+ | json_quote | json_type | actual_null | +------------+-----------+-------------+ | null | null | N/A | +------------+-----------+-------------+
Dalam SQLite, membagi angka dengan nol menghasilkan nilai nol (banyak DBMS lain membuat kesalahan dalam kasus seperti itu). Dalam contoh ini, saya telah menetapkan nilai nol untuk mengembalikan N/A
, sehingga kita dapat melihat bahwa ada perbedaan antara output dari dua fungsi dan nilai null yang sebenarnya. Artinya, satu-satunya nilai null pada output di atas ada di kolom terakhir.
Setelah mengatakan semua itu, nilai null masih dapat menghasilkan nilai teks SQL null
dikembalikan saat memanggil json_quote()
. Mungkin sebuah contoh menggambarkan hal ini lebih baik daripada yang bisa saya jelaskan:
SELECT
json_quote( 1 / 0 ),
json_type(json_quote( 1 / 0 )),
json_type( 1 / 0 ),
1 / 0;
Hasil:
+---------------------+--------------------------------+--------------------+-------+ | json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 | +---------------------+--------------------------------+--------------------+-------+ | null | null | N/A | N/A | +---------------------+--------------------------------+--------------------+-------+
Kita dapat melihat bahwa dua kolom pertama mengembalikan null
Nilai teks SQL, dan dua kolom lainnya mengembalikan nilai nol yang sebenarnya.
Meneruskan Boolean
Berikut adalah contoh melewatkan boolean seperti true
dan false
:
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false;
Hasil:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
Jumlah Argumen Tidak Valid
Memanggil fungsi tanpa meneruskan argumen menghasilkan kesalahan:
SELECT json_quote();
Hasil:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote(); ^--- error here
Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:
SELECT json_quote( 1, 2 );
Hasil:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote( 1, 2 ); ^--- error here