我有一个问题,我的oracle数据库中存储了一些JSON,我需要从中提取值。
问题是,有些字段是重复的。
当我尝试这个时,它起作用,因为options数组中只有一个firstname键:
SELECT
JSON_VALUE('{"increment_id":"2500000043","item_id":"845768","options":[{"firstname":"Kevin"},{"lastname":"Test"}]}', '$.options.firstname') AS value
FROM DUAL;
返回'Kevin'。
但是,当firstname字段有两个值时:
SELECT JSON_VALUE('{"increment_id":"2500000043","item_id":"845768","options":[{"firstname":"Kevin"},{"firstname":"Okay"},{"lastname":"Test"}]}', '$.options.firstname') AS value
FROM DUAL;
它只返回NULL。
有没有办法在这个上下文中选择第一个出现的'firstname'?
答案 0 :(得分:1)
JSON_VALUE从JSON数据返回一个SQL VALUE(如果该键不存在,则返回SQL NULL)。
如果你有一组值(一个JSON数组),你想要一个特定的数组项,你可以使用像JavaScript一样的数组下标(方括号),例如[2]来选择第三项。 [0]选择第一项。 要获取示例中的第一个数组项,您必须更改' $。options.firstname'中的路径表达式。到' $。options [0] .firstname'