Oracle JSON_TABLE() 函数使用指南
Oracle JSON_TABLE()
是一个内置函数,它创建 JSON 数据的关系视图,将 JSON 数据转为表格中的行和列。
Oracle JSON_TABLE()
语法
这里是 Oracle JSON_TABLE()
函数的语法:
JSON_TABLE
( expr [ FORMAT JSON ] [ , path ]
[ JSON_table_on_error_clause ] [ JSON_table_on_empty_clause ]
JSON_columns_clause )
参数
expr
-
必需的。它指定要查询的 JSON 数据。 对于
expr
,指定评估为文本字面量的表达式。 如果expr
是列,则列必须是数据类型VARCHAR2
、CLOB
或BLOB
。 如果expr
为空,则函数返回空值。 FORMAT JSON
-
可选的。如果
expr
是数据类型为BLOB
的列,则必须指定FORMAT JSON
。 path
-
可选的。它指定 SQL/JSON 路径表达式。此函数使用路径表达式评估
expr
并查找与路径表达式匹配或满足的标量 JSON 值。路径表达式必须是文本字面量。 JSON_table_on_error_clause
-
可选的。您可以使用此子句来指定在发生错误时函数返回的值。发生错误包括: 输入不是格式良好的
JSON
文本, 或者 在评估行路径表达式时找不到匹配项,或者其他错误。您可以使用以下子句:NULL ON ERROR
ERROR ON ERROR
JSON_table_on_empty_clause
-
可选的。您可以使用此子句来指定在使用 SQL/JSON 路径表达式评估 JSON 数据时找不到匹配项时此函数返回的值。您可以指定以下子句:
NULL ON EMPTY
- 当找不到匹配项时返回 null。ERROR ON EMPTY
- 当找不到匹配项时返回适当的 Oracle 错误。DEFAULT literal ON EMPTY
- 当找不到匹配项时返回literal
。literal
的数据类型必须与此函数返回的值的数据类型匹配。
JSON_columns_clause
-
必须的。这个子句用来定义由
JSON_TABLE
函数返回的虚拟关系表中的列。
返回值
Oracle JSON_TABLE()
函数返回一个从给定的 JSON 数据转化而来的结果集。
Oracle JSON_TABLE()
示例
这里有几个展示了 Oracle JSON_TABLE()
函数用法的示例。
示例 1
以下示例将一个 JSON 对象转化为关系视图:
SELECT *
FROM JSON_TABLE('{x:1, y:2}', '$' COLUMNS(x, y));
输出:
X Y
____ ____
1 2
示例 2
以下示例将一个包含多个 JSON 对象的 JSON 数组转化为关系视图:
SELECT *
FROM JSON_TABLE('[{x:1, y:2},{x:3, y:4}]', '$[*]' COLUMNS(x, y));
输出:
X Y
____ ____
1 2
3 4
示例 3
您可以使用 WHERE
语句来过滤 JSON_TABLE()
函数返回的行:
SELECT x, y
FROM JSON_TABLE('[{x:1, y:2},{x:3, y:4}]', '$[*]' COLUMNS(x, y))
WHERE x = 1;
输出:
X Y
____ ____
1 2
结论
Oracle JSON_TABLE()
是一个内置函数,它创建 JSON 数据的关系视图,将 JSON 数据转为表格中的行和列。