Db2 JSON_VALUE ERROR ON EMPTY не работает должным образом - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь заставить работать пункт JSON_VALUE ERROR ON EMPTY в Db2:

select json_value(json_object(key 'a' value 1), '$.b' error on empty)
from SYSIBM.DUAL

Вышеуказанное выглядит не так, как ожидалось. Я получаю нулевой результат:

1|
-|
 |

В Oracle, это работает как ожидалось:

select json_value(json_object(key 'a' value 1), '$.b' error on empty)
from DUAL

... производит

ORA -40462: JSON_VALUE оценивается как отсутствие значения

Чего мне не хватает? Я использую Db2 LUW (DB2 v11.5.0.0).

1 Ответ

2 голосов
/ 27 марта 2020

Похоже, что Db2 по умолчанию NULL ON ERROR вместо ERROR ON ERROR, как Oracle. Это приводит к ожидаемой ошибке:

select json_value(json_object(key 'a' value 1), '$.b' error on empty error on error)
from SYSIBM.DUAL

Уступ

Результат не содержит элемент SQL / JSON. SQLCODE = -16405, SQLSTATE = 22035, DRIVER = 4.7.85

В соответствии со стандартом SQL: 2016 Db2 соответствует, а Oracle - нет. Из ISO / IEC 9075-2: 2016 (E) 6.27

4) If <JSON value empty behavior> is not specified, then NULL ON EMPTY is implicit.
5) If <JSON value error behavior> is not specified, then NULL ON ERROR is implicit.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...