Anda dapat menggunakan fungsi JSON untuk menanyakan data yang disimpan dalam format JSON di kolom tabel. Fungsi JSON yang didukung oleh Tablestore SQL mengikuti sintaks MySQL 5.7. Topik ini menjelaskan fungsi JSON yang didukung oleh Tablestore SQL dan cara menggunakannya.
Fungsi JSON yang Didukung
Tabel berikut menjelaskan fungsi JSON yang didukung oleh Tablestore SQL.
Fungsi JSON | Deskripsi |
Mengembalikan data berdasarkan jalur yang Anda tentukan dari dokumen JSON setelah hasilnya dihilangkan tanda kutipnya dan dikonversi menjadi string. Fungsi ini setara dengan | |
Menghilangkan tanda kutip pada nilai JSON dan mengembalikan hasilnya sebagai string. | |
Mengembalikan data dari dokumen JSON. Data yang dikembalikan terletak berdasarkan jalur yang Anda tentukan sebagai argumen. |
->>
Fungsi ->> mengembalikan data berdasarkan jalur yang Anda tentukan dari dokumen JSON setelah hasilnya dihilangkan tanda kutipnya dan dikonversi menjadi string. Fungsi ini setara dengan JSON_UNQUOTE(JSON_EXTRACT()).
Sintaks
kolom->>jalurDeskripsi
Nilai pengembalian adalah nilai yang terletak berdasarkan parameter jalur yang Anda tentukan.
Jika nilai parameter adalah NULL atau jalur yang ditentukan oleh parameter jalur tidak ditemukan dalam dokumen, NULL akan dikembalikan.
Parameter
Parameter | Tipe | Deskripsi |
kolom | String | Nama kolom. |
jalur | String | Jalur dokumen JSON. Nilai parameter jalur harus dimulai dengan |
Contoh
Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan data yang terletak oleh jalur $.a di kolom coljson dari baris di mana nilai kolom kunci utama pkint adalah 1 dalam tabel json_table:
SELECT coljson, coljson->>'$.a' AS subdoc FROM json_table WHERE pkint = 1;Gambar berikut menunjukkan contoh keluaran.

JSON_UNQUOTE
Fungsi JSON_UNQUOTE menghilangkan tanda kutip pada nilai JSON dan mengembalikan hasilnya sebagai string.
Sintaks
JSON_UNQUOTE(json_val)Deskripsi
Nilai pengembalian adalah nilai yang diperoleh setelah nilai JSON dihilangkan tanda kutipnya dan dikonversi menjadi string.
Jika nilai parameter json_val adalah NULL, NULL akan dikembalikan.
Jika nilai JSON dimulai dan diakhiri dengan tanda kutip ganda ("), tetapi bukan string JSON yang valid, kesalahan akan terjadi.
Parameter
Parameter | Deskripsi |
json_val | Pernyataan JSON_EXTRACT. Untuk informasi lebih lanjut, lihat JSON_EXTRACT. |
Contoh
Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan data yang terletak oleh jalur $.a di kolom coljson dari baris di mana nilai kolom kunci utama pkint adalah 1 dalam tabel json_table:
SELECT coljson, JSON_UNQUOTE(JSON_EXTRACT(coljson, '$.a')) AS subdoc FROM json_table WHERE pkint = 1;Gambar berikut menunjukkan contoh keluaran.

JSON_EXTRACT
Fungsi JSON_EXTRACT mengembalikan data dari dokumen JSON. Data yang dikembalikan terletak berdasarkan jalur yang Anda tentukan sebagai argumen. Tablestore tidak mendukung tipe data JSON asli. Jika Anda menggunakan tipe data JSON, kesalahan yang menunjukkan tipe data tidak valid akan dikembalikan. Oleh karena itu, Anda harus menggunakan JSON_EXTRACT bersama dengan JSON_UNQUOTE.
Sintaks
JSON_EXTRACT(json_doc, jalur[, jalur] ...)Deskripsi
Nilai pengembalian terdiri dari semua nilai yang terletak berdasarkan jalur yang ditentukan oleh parameter jalur. Jika beberapa nilai terletak berdasarkan jalur yang ditentukan oleh parameter jalur, nilai-nilai tersebut secara otomatis dibungkus ke dalam array berdasarkan urutan jalur yang ditentukan oleh parameter jalur. Jika hanya satu nilai yang terletak berdasarkan jalur yang ditentukan oleh parameter jalur, nilai tersebut akan dikembalikan.
Jika nilai parameter adalah NULL atau jalur yang ditentukan oleh parameter jalur tidak ditemukan dalam dokumen, NULL akan dikembalikan.
Parameter
Parameter | Tipe | Deskripsi |
json_doc | String | Dokumen JSON. null Jika dokumen JSON yang ditentukan oleh parameter json_doc tidak valid atau ekspresi jalur yang ditentukan oleh parameter jalur tidak valid, kesalahan akan terjadi. |
jalur | String | Jalur dokumen JSON. Nilai parameter jalur harus dimulai dengan |
Contoh
Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan data yang terletak oleh jalur $.a di kolom coljson dari baris di mana nilai kolom kunci utama pkint adalah 1 dalam tabel json_table: Dalam contoh ini, nilai kolom coljson adalah {"a": 1, "b":2, "c":{"d":4}}.
SELECT coljson, JSON_UNQUOTE(JSON_EXTRACT(coljson, '$.a')) AS subdoc FROM json_table WHERE pkint = 1;Gambar berikut menunjukkan contoh keluaran.

Anda juga dapat menentukan beberapa jalur sekaligus. Nilai pengembalian dalam format array. Sebagai contoh, Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan data yang terletak berdasarkan jalur $.a, $.b, dan $.c.d di kolom coljson dari baris di mana nilai kolom kunci utama pkint adalah 1 dalam tabel json_table: Dalam contoh ini, nilai kolom coljson adalah {"a": 1, "b":2, "c":{"d":4}}.
SELECT coljson, JSON_UNQUOTE(JSON_EXTRACT(coljson, '$.a', '$.b', '$.c.d')) AS subdoc FROM json_table WHERE pkint = 1;Gambar berikut menunjukkan contoh keluaran.

Jalur JSON
Parameter jalur digunakan untuk menemukan jalur dokumen JSON.
Nilai parameter jalur harus dimulai dengan $, yang menentukan seluruh dokumen JSON. Anda dapat menentukan satu atau lebih pemilih jalur dalam nilai parameter jalur.
Jika tidak ada data yang ditemukan berdasarkan jalur dalam dokumen JSON, NULL akan dikembalikan.
Pemilih jalur
Item berikut menjelaskan pemilih jalur umum:
$.keydigunakan untuk memilih objek JSON. Anda dapat menambahkan kunci setelah titik (.) untuk memilih objek yang sesuai dengan kunci, seperti$.a. Jika kunci yang ditentukan mengandung spasi, tutup kunci dalam tanda kutip ganda ("), seperti$."a b".[N]digunakan untuk memilih indeks larik JSON. Indeks dimulai dari 0. Contoh:$[0]dan$[1].Jalur dapat berisi karakter asterisk (*) dan wildcard
**. Item berikut menjelaskan cara menggunakan jalur yang berisi karakter asterisk (*) dan wildcard **:.*: digunakan untuk menghitung nilai semua anggota dalam objek JSON.[*]: digunakan untuk menghitung nilai semua elemen dalam larik JSON.prefix**suffix: digunakan untuk menentukan semua jalur yang dimulai dengan awalan tertentu dan diakhiri dengan akhiran tertentu.
Contoh
Menanyakan Objek JSON
Sebagai contoh, Anda ingin menanyakan objek JSON berikut:
{"a": 1, "f": [1, 2, 3], "c": {"d": 4}}Tabel berikut menjelaskan nilai pengembalian ketika pemilih jalur yang berbeda dikonfigurasi.
Pemilih Jalur | Nilai Pengembalian |
$ |
|
$.a | 1 |
$.c |
|
$.c.d | 4 |
$.f[1] | 2 |
Sebagai contoh, Anda ingin menanyakan objek JSON berikut di mana kunci mengandung spasi:
{"a fish": "shark", "a bird": "sparrow"}Tabel berikut menjelaskan nilai pengembalian ketika pemilih jalur yang berbeda dikonfigurasi.
Pemilih Jalur | Nilai Pengembalian |
$."a fish" | shark |
$."a bird" | sparrow |
Menanyakan Larik JSON
Sebagai contoh, Anda ingin menanyakan larik JSON berikut:
[3, {"a": [5, 6], "b": 10}, [99, 100]]Tabel berikut menjelaskan nilai pengembalian ketika pemilih jalur yang berbeda dikonfigurasi.
Jika nilai pengembalian adalah nilai non-skalar, Anda dapat melanjutkan dengan pertanyaan bertingkat. Sebagai contoh, nilai yang dikembalikan untuk $[1] dan $[2] adalah nilai non-skalar. Dalam hal ini, Anda dapat menggunakan $[1].a dan $[2][0] untuk melakukan pertanyaan bertingkat.
Pemilih Jalur | Nilai Pengembalian |
$[0] | 3 |
$[1] |
|
$[1].a |
|
$[1].a[1] | 6 |
$[1].b | 10 |
$[2] |
|
$[2][0] | 99 |
$[3] | NULL |
Menjalankan Pertanyaan Wildcard
Sebagai contoh, Anda ingin menanyakan objek JSON berikut:
{"a": 1, "b": 2, "c": [3, 4, 5]}Tabel berikut menjelaskan nilai pengembalian ketika pemilih jalur yang berbeda dikonfigurasi.
Pemilih Jalur | Nilai Pengembalian |
$.* |
|
$.c[*] |
|
Sebagai contoh, Anda ingin menanyakan objek JSON berikut:
{"a": {"b": 1}, "c": {"b": 2}}Jika Anda menetapkan pemilih jalur ke $**.b, yang setara dengan $.a.b dan $.c.b dalam contoh ini, nilai pengembalian adalah [1, 2].