sql >> Databáze >  >> RDS >> Oracle

Funkce JSON_VALUE() v Oracle

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 dotazovat
  • JSON_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ý typ literal 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ý typ literal 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.


  1. Vraťte všechny možné kombinace hodnot ve sloupcích v SQL

  2. Jak použít smyčku SQL for k vložení řádků do databáze?

  3. SQL Server Database Backup Encryption

  4. JPA SQL Server Mapování bez dialektu pro typ JDBC:-9