Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当多个节点共享同一名称时,使用Oracle SQL获取JSON_值_Sql_Json_Oracle_Plsql - Fatal编程技术网

当多个节点共享同一名称时,使用Oracle SQL获取JSON_值

当多个节点共享同一名称时,使用Oracle SQL获取JSON_值,sql,json,oracle,plsql,Sql,Json,Oracle,Plsql,我有一个问题,我的oracle数据库中存储了一些JSON,我需要从中提取值 问题是,有些字段是重复的 当我尝试此操作时,它会起作用,因为选项数组中只有一个firstname键: SELECT JSON_VALUE('{"increment_id":"2500000043","item_id":"845768","options":[{"firstname":"Kevin"},{"lastname":"Test"}]}', '$.options.firstname') AS va

我有一个问题,我的oracle数据库中存储了一些JSON,我需要从中提取值

问题是,有些字段是重复的

当我尝试此操作时,它会起作用,因为选项数组中只有一个firstname键:

    SELECT 
    JSON_VALUE('{"increment_id":"2500000043","item_id":"845768","options":[{"firstname":"Kevin"},{"lastname":"Test"}]}', '$.options.firstname') AS value
   FROM DUAL;
返回“凯文”

但是,当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”在该上下文中的第一次出现吗?

JSON\u VALUE从JSON数据返回一个SQL值(如果键不存在,则返回SQL NULL)

如果您有一个值集合(JSON数组),您需要数组中的一个特定项,您可以使用数组下标(方括号),如JavaScript中的[2]来选择第三个项。[0]选择第一项。 要获取示例中的第一个数组项,必须将路径表达式从“$.options.firstname”更改为“$.options[0].firstname”