JSON_ EXTRACT _ PATH _ TEXT fungsi - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

JSON_ EXTRACT _ PATH _ TEXT fungsi

catatan

JSON_ PARSE dan fungsi terkaitnya mengurai JSON nilai sebagaiSUPER, yang diurai Amazon Redshift lebih efisien daripada. VARCHAR

Alih-alih menggunakan JSON _ EXTRACT PATH _ _TEXT, kami sarankan Anda mengurai JSON string Anda menggunakan JSON_ PARSE fungsi untuk mendapatkan nilai. SUPER Kemudian, kueri elemen yang Anda inginkan menggunakan value.attribute sintaks. Untuk informasi lebih lanjut tentang menanyakan elemen array dalam SUPER nilai, buka. Meminta data semi-terstruktur

TEXTFungsi JSON _ EXTRACT _ PATH _ mengembalikan nilai untuk pasangan kunci-nilai direferensikan oleh serangkaian elemen jalur dalam string. JSON JSONJalurnya bisa bersarang hingga kedalaman lima tingkat. Elemen jalur peka huruf besar/kecil. Jika elemen jalur tidak ada dalam JSON string, JSON _ _ EXTRACT PATH _ TEXT kembaliNULL.

Jika argumen null_if_invalid disetel ke true dan JSON string tidak valid, fungsi kembali alih-alih mengembalikan kesalahan. NULL

JSON_ EXTRACT _ PATH _ TEXT memiliki ukuran data maksimum 64KB. Jadi, jika ada JSON catatan yang lebih besar dari 64KB, memprosesnya dengan JSON EXTRACT _ PATH _ _ TEXT menghasilkan kesalahan.

Untuk informasi tentang JSON fungsi tambahan, lihatJSONfungsi. Untuk informasi lebih lanjut tentang bekerja denganJSON, lihatCOPYdari JSON format.

Sintaks

JSON_EXTRACT_PATH_TEXT('json_string', 'path_elem' [,'path_elem'[, …] ] [, null_if_invalid ] )

Argumen

json_string

JSONString yang diformat dengan benar.

path_elem

Sebuah elemen path dalam JSON string. Satu elemen jalur diperlukan. Elemen jalur tambahan dapat ditentukan, hingga lima tingkat dalam.

null_if_invalid

(Opsional) BOOLEAN Nilai yang menentukan apakah akan kembali NULL jika JSON string input tidak valid alih-alih mengembalikan kesalahan. Untuk kembali NULL jika JSON tidak valid, tentukan true ()t. Untuk mengembalikan kesalahan jika tidak JSON valid, tentukan false ()f. Default-nya adalah false.

Dalam sebuah JSON string, Amazon Redshift mengenali \n sebagai karakter baris baru dan \t sebagai karakter tab. Untuk memuat garis miring terbalik, lepaskan dengan garis miring terbalik (). \\ Untuk informasi selengkapnya, lihat Karakter melarikan diri di JSON.

Jenis pengembalian

VARCHAR

Sebuah VARCHAR string yang mewakili JSON nilai direferensikan oleh elemen path.

Contoh

Untuk mengembalikan nilai jalur'f4', 'f6', gunakan contoh berikut.

SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4', 'f6'); +------------------------+ | json_extract_path_text | +------------------------+ | star | +------------------------+

Untuk mengembalikan kesalahan karena JSON tidak valid, gunakan contoh berikut.

SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6'); ERROR: invalid json object {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}

Untuk menyetel null_if_invalid ke true, sehingga pernyataan mengembalikan invalid JSON alih-alih mengembalikan kesalahan, gunakan NULL contoh berikut.

SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6',true); +------------------------+ | json_extract_path_text | +------------------------+ | NULL | +------------------------+

Untuk mengembalikan nilai untuk jalur'farm', 'barn', 'color', di mana nilai yang diambil berada di tingkat ketiga, gunakan contoh berikut. Sampel ini diformat dengan alat JSON serat, agar lebih mudah dibaca.

SELECT JSON_EXTRACT_PATH_TEXT('{ "farm": { "barn": { "color": "red", "feed stocked": true } } }', 'farm', 'barn', 'color'); +------------------------+ | json_extract_path_text | +------------------------+ | red | +------------------------+

Untuk kembali NULL karena 'color' elemen hilang, gunakan contoh berikut. Sampel ini diformat dengan alat JSON serat.

SELECT JSON_EXTRACT_PATH_TEXT('{ "farm": { "barn": {} } }', 'farm', 'barn', 'color'); +------------------------+ | json_extract_path_text | +------------------------+ | NULL | +------------------------+

Jika JSON valid, mencoba mengekstrak elemen yang hilang kembaliNULL.

Untuk mengembalikan nilai jalur'house', 'appliances', 'washing machine', 'brand', gunakan contoh berikut.

SELECT JSON_EXTRACT_PATH_TEXT('{ "house": { "address": { "street": "123 Any St.", "city": "Any Town", "state": "FL", "zip": "32830" }, "bathroom": { "color": "green", "shower": true }, "appliances": { "washing machine": { "brand": "Any Brand", "color": "beige" }, "dryer": { "brand": "Any Brand", "color": "white" } } } }', 'house', 'appliances', 'washing machine', 'brand'); +------------------------+ | json_extract_path_text | +------------------------+ | Any Brand | +------------------------+

Contoh berikut membuat tabel sampel dan mengisinya dengan SUPER nilai-nilai, kemudian mengembalikan nilai untuk jalur 'f2' untuk kedua baris.

CREATE TABLE json_example(id INT, json_text SUPER); INSERT INTO json_example VALUES (1, JSON_PARSE('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}')), (2, JSON_PARSE('{ "farm": { "barn": { "color": "red", "feed stocked": true } } }')); SELECT * FROM json_example; id | json_text ------------+-------------------------------------------- 1 | {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}} 2 | {"farm":{"barn":{"color":"red","feed stocked":true}}} SELECT id, JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(json_text), 'f2') FROM json_example; id | json_text ------------+-------------------------------------------- 1 | {"f3":1} 2 |