来自 JSON 列的 Oracle Select 带有连字符键
Oracle Select from JSON column with hyphenated keys
假设我将以下内容存储在 Oracle 数据库的 JSON 列中:
{
"key-with-hyphens": "value"
}
假设此列在名为 my_table
的 table 中名为 json_column
,那么我正在尝试 select "key-with-hyphens"
键的值像这样:
select json_column.key-with-hyphens from my_table;
这给了我以下错误:
ORA-00936: missing expression
00936. 00000 - "missing expression"
当从 Oracle 中的 JSON 列中 select 为带连字符的键值计算值时,是否需要使用某种特殊语法?
事实证明,有几种方法可以做到这一点。
方法一:
按照我最初尝试的方式进行操作,这有几个问题select:
select json_column.key-with-hyphens from my_table;
首先,JSON 列中的键 selection 将不起作用,除非您为 table 添加别名,例如:
select mt.json_column.key-with-hyphens from my_table mt;
但是,这仍然不能解决连字符键的问题。要允许在此语法中使用带连字符的键,您需要将键的名称用引号引起来:
select mt.json_column."key-with-hyphens" from my_table mt;
以上查询将按预期工作。
方法二:
另一种不使用 table 别名的方法是在 select 子句中使用 json_value
函数。您将 JSON 列作为第一个参数传递,将 select 的键的完整路径作为第二个参数传递,使用 $
作为 [=36] 的根上下文=] 对象存储在您的列中。以下查询也应按预期工作:
select json_value(json_column, '$."key-with-hyphens"') from my_table;
假设我将以下内容存储在 Oracle 数据库的 JSON 列中:
{
"key-with-hyphens": "value"
}
假设此列在名为 my_table
的 table 中名为 json_column
,那么我正在尝试 select "key-with-hyphens"
键的值像这样:
select json_column.key-with-hyphens from my_table;
这给了我以下错误:
ORA-00936: missing expression
00936. 00000 - "missing expression"
当从 Oracle 中的 JSON 列中 select 为带连字符的键值计算值时,是否需要使用某种特殊语法?
事实证明,有几种方法可以做到这一点。
方法一:
按照我最初尝试的方式进行操作,这有几个问题select:
select json_column.key-with-hyphens from my_table;
首先,JSON 列中的键 selection 将不起作用,除非您为 table 添加别名,例如:
select mt.json_column.key-with-hyphens from my_table mt;
但是,这仍然不能解决连字符键的问题。要允许在此语法中使用带连字符的键,您需要将键的名称用引号引起来:
select mt.json_column."key-with-hyphens" from my_table mt;
以上查询将按预期工作。
方法二:
另一种不使用 table 别名的方法是在 select 子句中使用 json_value
函数。您将 JSON 列作为第一个参数传递,将 select 的键的完整路径作为第二个参数传递,使用 $
作为 [=36] 的根上下文=] 对象存储在您的列中。以下查询也应按预期工作:
select json_value(json_column, '$."key-with-hyphens"') from my_table;