Di Oracle Database, JSON_VALUE()
function menemukan nilai JSON skalar yang ditentukan dalam data JSON dan mengembalikannya sebagai nilai SQL.
Sintaks
Sintaksnya seperti ini:
JSON_VALUE
( expr [ FORMAT JSON ], JSON_basic_path_expression
[ JSON_value_returning_clause ] [ JSON_value_on_error_clause ]
[ JSON_value_on_empty_clause ][ JSON_value_on_mismatch_clause ]
)
Dimana:
expr
adalah dokumen JSON yang ingin Anda kueriJSON_basic_path_expression
adalah ekspresi jalur SQL/JSON. Ekspresi jalur ini digunakan untuk mengevaluasiexpr
dan temukan nilai JSON skalar yang cocok, atau memenuhi, ekspresi jalur.JSON_query_returning_clause
menentukan tipe data dan format nilai yang dikembalikan oleh fungsi.JSON_query_on_error_clause
menentukan nilai yang dikembalikan ketika kesalahan tertentu terjadi.JSON_query_on_empty_clause
menentukan nilai yang ditampilkan jika tidak ada kecocokan yang ditemukan saat data JSON dievaluasi menggunakan ekspresi jalur SQL/JSON.JSON_value_on_mismatch_clause
dapat digunakan untuk menentukan abaikan, kesalahan, atau nol untuk kasus kesalahan seperti data tambahan, data yang hilang, dan kesalahan jenis. Ini dapat diterapkan secara umum, atau kasus per kasus.
Lihat dokumentasi Oracle untuk penjelasan rinci tentang klausa opsional.
Contoh
Berikut adalah contoh untuk mendemonstrasikan bagaimana JSON_VALUE()
fungsi berfungsi:
SELECT
JSON_VALUE('{a:1, b:2, c:3}', '$.b')
FROM DUAL;
Hasil:
2
Dalam hal ini saya menentukan $.b
untuk mengembalikan nilai skalar pada b
.
Berikut ini contoh mengembalikan nilai dari array:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[2]')
FROM DUAL;
Hasil:
c
Array berbasis nol, jadi $[2]
mengembalikan elemen larik ketiga.
Penanganan Kesalahan
Ada tiga klausa yang dapat Anda gunakan untuk menentukan apa yang harus dikembalikan setiap kali jenis kesalahan tertentu terjadi. Klausanya adalah:
NULL
ON
ERROR
– Mengembalikan null ketika terjadi kesalahan. Ini adalah default.ERROR
ON
ERROR
– Mengembalikan kesalahan Oracle yang sesuai saat terjadi kesalahan.DEFAULT
literal
ON
ERROR
– Mengembalikanliteral
ketika terjadi kesalahan. Jenis dataliteral
harus cocok dengan tipe data dari nilai yang dikembalikan oleh fungsi.
Ini contohnya:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' NULL ON ERROR) AS "r1",
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Oops!' ON ERROR) AS "r2"
FROM DUAL;
Hasil:
r1 r2 _______ ________ null Oops!
Ini dia dengan ERROR ON ERROR
klausa:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' ERROR ON ERROR)
FROM DUAL;
Hasil:
Error report - ORA-40462: JSON_VALUE evaluated to no value
Klausa kesalahan di atas adalah untuk menangani kesalahan berikut:
- Argumen pertama bukanlah data JSON yang terbentuk dengan baik menggunakan sintaks JSON yang ketat atau longgar
- Nilai nonskalar ditemukan saat data JSON dievaluasi menggunakan ekspresi jalur SQL/JSON
- Tidak ada kecocokan yang ditemukan saat data JSON dievaluasi menggunakan ekspresi jalur SQL/JSON. Anda dapat mengganti perilaku untuk jenis kesalahan ini dengan menentukan
JSON_value_on_empty_clause
. - Tipe data nilai yang dikembalikan tidak cukup besar untuk menampung nilai yang dikembalikan
Menangani Hasil Kosong
Anda juga dapat menggunakan klausa untuk menentukan nilai yang dikembalikan jika tidak ditemukan kecocokan. Klausa ini memungkinkan Anda untuk menentukan hasil yang berbeda untuk jenis kesalahan ini daripada hasil yang ditentukan dengan klausa kesalahan.
Klausa tersebut adalah:
NULL
ON
EMPTY
– Mengembalikan null saat tidak ditemukan kecocokan.ERROR
ON
EMPTY
– Mengembalikan kesalahan Oracle yang sesuai saat tidak ditemukan kecocokan.DEFAULT
literal
ON
EMPTY
– Mengembalikanliteral
ketika tidak ada kecocokan yang ditemukan. Tipe dataliteral
harus cocok dengan tipe data dari nilai yang dikembalikan oleh fungsi ini.
Contoh:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL;
Hasil:
Dang!
Jika Anda menghilangkan klausa ini, maka klausa kesalahan menentukan nilai yang dikembalikan ketika tidak ada kecocokan yang ditemukan.