Oracle使用带连字符的键从JSON列中选择

时间:2017-02-09 15:17:17

标签: json oracle hyphen

假设我将以下内容存储在Oracle数据库的JSON列中:

services

假设此列在名为{ "key-with-hyphens": "value" } 的表中被称为json_column,那么我尝试选择my_table键的值,如下所示:

"key-with-hyphens"

这给了我以下错误:

select json_column.key-with-hyphens from my_table;

在Oracle中从JSON列中选择带连字符的键时,是否需要使用某种特殊语法?

1 个答案:

答案 0 :(得分:0)

事实证明,有几种方法可以做到这一点。

方法1:

按照我尝试的原始方式进行操作,这个选择有几个问题:

select json_column.key-with-hyphens from my_table;

首先,除非您对表进行别名,否则JSON列中的键选择将不起作用:

select mt.json_column.key-with-hyphens from my_table mt;

但是,这仍然无法解决带连字符的问题。要在此语法中允许使用带连字符的键,您需要将键的名称用引号括起来:

select mt.json_column."key-with-hyphens" from my_table mt;

上述查询将按预期工作。

方法2:

另一种方法是在没有别名表的情况下使用select子句中的json_value函数。您将JSON列作为第一个参数传递,并将要选择的键的完整路径作为第二个参数,使用$作为存储在列中的JSON对象的根上下文。以下查询也应按预期工作:

select json_value(json_column, '$."key-with-hyphens"') from my_table;