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 是列,则列必须是数据类型 VARCHAR2CLOBBLOB。 如果 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 - 当找不到匹配项时返回 literalliteral 的数据类型必须与此函数返回的值的数据类型匹配。
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 数据转为表格中的行和列。