Oracle-JSON_值返回NULL

Oracle-JSON_值返回NULL,oracle,json-value,Oracle,Json Value,我有一个JSON字符串,如下所示,当我运行以下查询时,它不会返回任何内容。JSON是有效的,那么我是否遗漏了什么 SELECT JSON_VALUE(json_content, '$.section_1') FROM messages; {"section_1":{"section_publish":true,"section_body":"<p><b>Overview<\/b><

我有一个JSON字符串,如下所示,当我运行以下查询时,它不会返回任何内容。JSON是有效的,那么我是否遗漏了什么

SELECT JSON_VALUE(json_content, '$.section_1') FROM messages;


{"section_1":{"section_publish":true,"section_body":"<p><b>Overview<\/b><\/p><p>Launched on 19\/06\/1992, the NUVEEN NEW YORK SELECT TAX-FREE INCOME (NXN) is a passively managed exchange traded fund designed to provide a broad exposure to<\/p>"}}
从:

该函数使用路径表达式计算expr并查找与路径表达式匹配或满足该表达式的标量JSON值

我相信,您的路径表达式将返回一个JSON对象,而不是标量。这是一个错误,默认行为是返回null。您可以尝试在ERROR子句中添加一个ERROR,看看这是否会引发错误。

正如eaolson所说,JSON_值将只返回一个标量值。如果要返回第1节中包含的JSON字符串,可以在使用关键字格式JSON的同时使用JSON_表

具有 信息 像 选择“{section_1:{section_publish:true,section_body:概述于1992年6月19日推出,NUVEEN NEW YORK SELECT免税收入NXN是一只被动管理的交易所交易基金,旨在提供广泛的}风险敞口,作为json_内容 来自双重 选择j* 来自消息 交叉连接 JSON_表 内容, '$' 列section1格式JSON路径“$.section_1”, section1_发布路径“$。section_1.section_发布”, 截面1_body PATH'$。截面1。截面体'j;
我希望最后能做的是,取回正文部分之后的部分。最终将有一个section_2,它将有一个section_主体,我想检索它。但我认为查询将返回某些内容……我认为$.section\u 1.section\u body将返回该元素。@LandonStatis-查询确实返回某些内容:null。eaolson是正确的-如果您想要检索标量字符串,即与键节_body关联的值,您可以使用JSON_值来检索,正如eaolson在上面的注释中所示。这是有效的。谢谢我尝试使用JSON_查询,如下所示:选择JSON_查询JSON_内容,'$.section_1.section_body'ERROR ON ERROR作为消息中的值;但它只给出了一个错误:ORA-40441:JSON语法错误。有什么想法吗?@LandonStatis-为什么要尝试使用JSON\u查询?该函数返回一个JSON字符串,而不是标量值或字符串。当给定给JSON_查询的路径指向叶节点时,必须在ERROR ON ERROR之前使用WITH WRAPPER子句硬编码关键字,返回的字符串将括在括号中;不完全是你需要的。如果您真的只需要从整个JSON字符串中提取一个值,那么即使JSON_表对于您所需要的内容来说也是多余的;eaolson在对其答案的评论中向您展示了如何使用JSON_值。