В Oracle Database, JSON_VALUE()
функцията намира определена скаларна JSON стойност в JSON данни и я връща като SQL стойност.
Синтаксис
Синтаксисът е така:
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 ]
)
Къде:
expr
е JSON документът, който искате да направите заявкаJSON_basic_path_expression
е изразът на пътя на SQL/JSON. Този израз за път се използва за оценка наexpr
и намерете скаларна стойност на JSON, която съответства или удовлетворява израза за пътя.JSON_query_returning_clause
определя типа данни и формата на стойността, върната от функцията.JSON_query_on_error_clause
указва стойността, върната при възникване на определени грешки.JSON_query_on_empty_clause
посочва връщаната стойност, ако не бъде намерено съвпадение, когато JSON данните се оценяват с помощта на израза за SQL/JSON пътека.JSON_value_on_mismatch_clause
може да се използва за определяне на игнориране, грешка или нула за случаи на грешки като допълнителни данни, липсващи данни и грешки при тип. Може да се прилага като цяло или за всеки отделен случай.
Вижте документацията на Oracle за подробно обяснение на незадължителните клаузи.
Пример
Ето пример, за да демонстрирате как JSON_VALUE()
функция работи:
SELECT
JSON_VALUE('{a:1, b:2, c:3}', '$.b')
FROM DUAL;
Резултат:
2
В този случай посочих $.b
за да върне скаларната стойност в b
.
Ето пример за връщане на стойност от масив:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[2]')
FROM DUAL;
Резултат:
c
Масивите са базирани на нула и така $[2]
връща третия елемент на масива.
Обработка на грешки
Има три клаузи, които можете да използвате, за да посочите какво да върнете, когато възникнат определени видове грешки. Клаузите са:
NULL
ON
ERROR
– Връща нула, когато възникне грешка. Това е по подразбиране.ERROR
ON
ERROR
– Връща съответната грешка на Oracle, когато възникне грешка.DEFAULT
literal
ON
ERROR
– Връщаliteral
когато възникне грешка. Типът данни наliteral
трябва да съответства на типа данни на стойността, върната от функцията.
Ето един пример:
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;
Резултат:
r1 r2 _______ ________ null Oops!
Ето го с ERROR ON ERROR
клауза:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' ERROR ON ERROR)
FROM DUAL;
Резултат:
Error report - ORA-40462: JSON_VALUE evaluated to no value
Горните клаузи за грешка са за обработка на следните грешки:
- Първият аргумент не е добре оформени JSON данни, използващи строг или слаб синтаксис на JSON.
- Открива се нескаларна стойност, когато данните в JSON се оценяват с помощта на израза за SQL/JSON пътя
- Не е намерено съвпадение, когато данните в JSON се оценяват с помощта на израза за път на SQL/JSON. Можете да замените поведението за този тип грешка, като посочите
JSON_value_on_empty_clause
. - Типът данни на връщаната стойност не е достатъчно голям, за да задържи връщаната стойност
Обработка на празни резултати
Можете също да използвате клауза, за да посочите върнатата стойност, ако не бъде намерено съвпадение. Тази клауза ви позволява да посочите различен резултат за този тип грешка от резултата, определен с клаузите за грешка.
Тези клаузи са:
NULL
ON
EMPTY
– Връща нула, когато не е намерено съвпадение.ERROR
ON
EMPTY
– Връща съответната грешка на Oracle, когато не е намерено съвпадение.DEFAULT
literal
ON
EMPTY
– Връщаliteral
когато не се намери съвпадение. Типът данни наliteral
трябва да съответства на типа данни на стойността, върната от тази функция.
Пример:
SELECT
JSON_VALUE('["a", "b", "c"]', '$[3]' DEFAULT 'Dang!' ON EMPTY)
FROM DUAL;
Резултат:
Dang!
Ако пропуснете тази клауза, тогава клаузата за грешка определя стойността, върната, когато не бъде намерено съвпадение.