Belirtilen yoldaki değeri bir JSON dizesinden ayıklar ve bunu bir VARCHAR dizesi olarak döndürür. Yol bir dizi veya nesneyle eşleşirse, eşleşen yapı yerel bir tür olarak değil, serileştirilmiş bir VARCHAR dizesi olarak döndürülür.
Sınırlamalar
JSON_VALUE işlevi yalnızca Ververica Runtime (VVR) 3.0.0 veya sonraki sürümlerini kullanan Apache Flink için Realtime Compute ortamında desteklenir.
Söz dizimi
VARCHAR JSON_VALUE(VARCHAR content, VARCHAR path)
Parametreler
| Parametre | Veri türü | Açıklama |
|---|---|---|
content |
VARCHAR | Ayrıştırılacak JSON dizesi. Parametre türü VARCHAR olmalıdır. Değilse, önce dönüştürmek için CAST kullanın; VARCHAR dışındaki bir değeri doğrudan iletmek ayrıştırma hatalarına ve beklenmeyen NULL sonuçlarına neden olabilir. |
path |
VARCHAR | Ayıklanacak değeri tanımlayan yol ifadesi. Yolu tek tırnak içine alın ('). Örnek: JSON_VALUE(json,'$.passenger_name') AS ABC |
path parametresi aşağıdaki sembolleri destekler:
| Sembol | Anlamı |
|---|---|
$ |
Kök nesne |
[] |
Dizi alt simgesi |
* |
Dizi joker karakteri |
. |
Alt öğe |
Kullanım notları
contentgeçersiz JSON içeriyorsa veya herhangi bir parametreNULLiseNULLdöndürülür.Yol bir dizi veya nesneyle eşleşirse, sonuç yerel bir dizi veya nesne yerine bu yapının
VARCHARdize gösterimi olur (örneğin,[30,40]).
Örnekler
Aşağıdaki örneklerde, farklı content ve path kombinasyonlarının çıktıyı nasıl etkilediğini göstermek amacıyla T1 tablosuna karşı tek bir SELECT deyimi kullanılır.
T1 Tablosu:
| id (INT) | json (VARCHAR) | path1 (VARCHAR) |
|---|---|---|
| 1 | [10, 20, [30, 40]] |
$[2][*] |
| 2 | {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"} |
$.ccc.hhh[*] |
| 3 | {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"} |
$.ccc.hhh[1] |
| 4 | [10, 20, [30, 40]] |
NULL |
| 5 | NULL | $[2][*] |
| 6 | "{xx]" |
"$[2][*]" |
Test deyimi:
SELECT
id,
JSON_VALUE(json, path1) AS `value`
FROM
T1;
Sonuçlar:
| id (INT) | value (VARCHAR) | Notlar |
|---|---|---|
| 1 | [30,40] |
$[2] konumundaki dizi — * ile tüm öğeler, VARCHAR olarak serileştirildi |
| 2 | ["h0","h1","h2"] |
$.ccc.hhh konumundaki iç içe geçmiş dizi — * ile tüm öğeler, VARCHAR olarak serileştirildi |
| 3 | h1 |
hhh dizisindeki 1 indeksindeki tek öğe |
| 4 | NULL | path1 NULL değerindedir |
| 5 | NULL | json NULL değerindedir |
| 6 | NULL | json geçersiz JSON içeriğidir |