Oracle解析JSON字符串

json_value 以字母开头的key可以直接拼接path; 如果是纯数字key, 需要用双引号引起来, 如:

select json_value('{"123":"009"}','$."123"') from dual
;-- => 009

否则会报错

ORA-40597: JSON 路径表达式语法错误 (‘$.123’)
JZN-00209: Unexpected characters after end of path
位于位置 1
40597. 00000 - “JSON path expression syntax error (‘%s’)%s\nat position %s”
*Cause: The specified JavaScript Object Notation (JSON) path expression
had invalid syntax and could not be parsed.
*Action: Specify JSON path expression with the correct syntax.

以字母开头的key用引号引起来之后也可以解析出来:

-- key: abc
select json_value('{"abc":"009"}','$."abc"') from dual
;-- => 009

-- key:aBc, path:$."abc"
select json_value('{"aBc":"009"}','$."abc"') from dual
;-- => null

-- key: aBc, path:$."aBc"
select json_value('{"aBc":"009"}','$."aBc"') from dual
;-- => 009

因此, 建议动态拼接key的时候, path都拼接上双引号.

你可能感兴趣的:(Oracle,json,oracle,数据库)