全部产品
Search
文档中心

Tablestore:Fungsi JSON

更新时间:Jun 24, 2025

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 JSON_UNQUOTE(JSON_EXTRACT()).

JSON_UNQUOTE

Menghilangkan tanda kutip pada nilai JSON dan mengembalikan hasilnya sebagai string.

JSON_EXTRACT

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->>jalur

Deskripsi

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 $, yang menentukan seluruh dokumen JSON. Anda dapat menentukan satu atau lebih pemilih jalur dalam nilai parameter jalur. Untuk informasi lebih lanjut, lihat Jalur JSON.

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.

image..png

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.

null

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.

1673770680585-e4dc3466-2434-4ccb-be2f-f5166a7e3e49..png

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 $, yang menentukan seluruh dokumen JSON. Anda dapat menentukan satu atau lebih pemilih jalur dalam nilai parameter jalur. Untuk informasi lebih lanjut, lihat Jalur JSON.

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.

1673770680585-e4dc3466-2434-4ccb-be2f-f5166a7e3e49..png

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.

1673771181990-4c5db21a-7ccc-4a7c-ba4a-c87a36e2aa13..png

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.

null

Jika tidak ada data yang ditemukan berdasarkan jalur dalam dokumen JSON, NULL akan dikembalikan.

Pemilih jalur

Item berikut menjelaskan pemilih jalur umum:

  • $.key digunakan 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": {"d": 4}, "f": [1, 2, 3]}

$.a

1

$.c

{"d": 4}

$.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.

null

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]

{"a": [5, 6], "b": 10}

$[1].a

[5, 6]

$[1].a[1]

6

$[1].b

10

$[2]

[99, 100]

$[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

$.*

[1, 2, [3, 4, 5]]

$.c[*]

[3, 4, 5]

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].