V databázi Oracle je to JSON_VALUE()
Funkce vyhledá zadanou skalární hodnotu JSON v datech JSON a vrátí ji jako hodnotu SQL.
Syntaxe
Syntaxe vypadá takto:
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 ]
)
Kde:
expr
je dokument JSON, na který se chcete dotazovatJSON_basic_path_expression
je výraz cesty SQL/JSON. Tento výraz cesty se používá k vyhodnoceníexpr
a najděte skalární hodnotu JSON, která odpovídá nebo vyhovuje výrazu cesty.JSON_query_returning_clause
určuje datový typ a formát hodnoty vrácené funkcí.JSON_query_on_error_clause
určuje hodnotu vrácenou při výskytu určitých chyb.JSON_query_on_empty_clause
určuje hodnotu vrácenou, pokud není nalezena žádná shoda při vyhodnocování dat JSON pomocí výrazu cesty SQL/JSON.JSON_value_on_mismatch_clause
lze použít k určení ignorování, chyby nebo null pro případy chyb, jako jsou data navíc, chybějící data a chyby typu. Lze jej použít obecně nebo případ od případu.
Podrobné vysvětlení volitelných klauzulí naleznete v dokumentaci Oracle.
Příklad
Zde je příklad, který ukazuje, jak JSON_VALUE()
funkce funguje:
SELECT
JSON_VALUE('{a:1, b:2, c:3}', '$.b')
FROM DUAL;
Výsledek:
2
V tomto případě jsem zadal $.b
vrátíte skalární hodnotu na b
.
Zde je příklad vrácení hodnoty z pole:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[2]')
FROM DUAL;
Výsledek:
c
Pole jsou založeny na nule, a tak $[2]
vrátí třetí prvek pole.
Zpracování chyb
Existují tři klauzule, které můžete použít k určení toho, co se má vrátit, kdykoli dojde k určitému druhu chyb. Tyto věty jsou:
NULL
ON
ERROR
– Vrátí hodnotu null, když dojde k chybě. Toto je výchozí.ERROR
ON
ERROR
– Vrátí příslušnou chybu Oracle, když dojde k chybě.DEFAULT
literal
ON
ERROR
– Vrátíliteral
když dojde k chybě. Datový typliteral
musí odpovídat datovému typu hodnoty vrácené funkcí.
Zde je příklad:
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;
Výsledek:
r1 r2 _______ ________ null Oops!
Zde je to s ERROR ON ERROR
klauzule:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' ERROR ON ERROR)
FROM DUAL;
Výsledek:
Error report - ORA-40462: JSON_VALUE evaluated to no value
Výše uvedené chybové klauzule jsou určeny pro zpracování následujících chyb:
- Prvním argumentem nejsou správně vytvořená data JSON používající přísnou nebo laxní syntaxi JSON
- Když jsou data JSON vyhodnocena pomocí výrazu cesty SQL/JSON, je nalezena neskalární hodnota
- Při vyhodnocení dat JSON pomocí výrazu cesty SQL/JSON nebyla nalezena žádná shoda. Chování tohoto typu chyby můžete přepsat zadáním
JSON_value_on_empty_clause
. - Datový typ návratové hodnoty není dostatečně velký, aby pojal návratovou hodnotu
Zpracování prázdných výsledků
Pokud není nalezena žádná shoda, můžete také použít klauzuli k určení vrácené hodnoty. Tato klauzule vám umožňuje určit jiný výsledek pro tento typ chyby, než jaký je uveden v klauzuli o chybě.
Tyto klauzule jsou:
NULL
ON
EMPTY
– Pokud není nalezena žádná shoda, vrátí hodnotu null.ERROR
ON
EMPTY
– Pokud není nalezena žádná shoda, vrátí příslušnou chybu Oracle.DEFAULT
literal
ON
EMPTY
– Vrátíliteral
když není nalezena žádná shoda. Datový typliteral
musí odpovídat datovému typu hodnoty vrácené touto funkcí.
Příklad:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL;
Výsledek:
Dang!
Pokud tuto klauzuli vynecháte, pak klauzule o chybě určuje hodnotu vrácenou, když není nalezena žádná shoda.