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:
exprje dokument JSON, na který se chcete dotazovatJSON_basic_path_expressionje výraz cesty SQL/JSON. Tento výraz cesty se používá k vyhodnoceníexpra najděte skalární hodnotu JSON, která odpovídá nebo vyhovuje výrazu cesty.JSON_query_returning_clauseurčuje datový typ a formát hodnoty vrácené funkcí.JSON_query_on_error_clauseurčuje hodnotu vrácenou při výskytu určitých chyb.JSON_query_on_empty_clauseurč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_clauselze 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:
NULLONERROR– Vrátí hodnotu null, když dojde k chybě. Toto je výchozí.ERRORONERROR– Vrátí příslušnou chybu Oracle, když dojde k chybě.DEFAULTliteralONERROR– Vrátíliteralkdyž dojde k chybě. Datový typliteralmusí 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:
NULLONEMPTY– Pokud není nalezena žádná shoda, vrátí hodnotu null.ERRORONEMPTY– Pokud není nalezena žádná shoda, vrátí příslušnou chybu Oracle.DEFAULTliteralONEMPTY– Vrátíliteralkdyž není nalezena žádná shoda. Datový typliteralmusí 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.