首批通过分布式安全可靠测评,为关键业务系统打造
TABLE FUNCTION 概述
更新时间:2026-07-14 20:43:11
描述
Table Function(表函数)用于把半结构化数据展开为关系行集,可在 SELECT ... FROM 中像表一样被引用。
MySQL 模式下常见的表函数入口包括:
JSON_TABLE(...):将 JSON 文档展开为行列。FILES(...):从外部文件位置读取数据并作为行集参与查询。
语法特点
使用位置
表函数作为表因子使用,通常出现在 FROM 子句中。
别名要求
JSON_TABLE 需要指定表别名。
JSON_TABLE 语法
JSON_TABLE(
expr [FORMAT JSON]
[, json_path_literal]
[ERROR | NULL ON ERROR]
COLUMNS (
column_list
)
) [AS] alias
column_list:
column[, column ...]
column:
column_name FOR ORDINALITY
| column_name [json_value_return_type] EXISTS [PATH path_literal]
[json_value_on_error_clause] [json_value_on_empty_clause]
| column_name [json_query_return_type] FORMAT JSON
[ALLOW | DISALLOW SCALARS] [json_query_wrapper_clause]
[PATH path_literal] [json_query_on_error_clause]
| column_name [json_value_return_type] [TRUNCATE] [PATH path_literal]
[json_value_on_error_clause] [json_value_on_empty_clause]
| NESTED PATH path_literal COLUMNS (column_list)
说明
上文为 JSON_TABLE 的语法结构总览,本页仅列出完整语法骨架,不逐一说明各子句含义与全部可选组合。
当前 OceanBase 版本中各子句的实际支持范围、语义及示例,请以专篇 JSON_TABLE 函数 为准。
常用简写形式(省略部分可选项时)如下:
JSON_TABLE(expr, path_literal COLUMNS (column_list)) [AS] alias
列定义能力
COLUMNS 子句中的 column 主要包括以下几类(详见上文语法块):
| 列定义形式 | 用途 |
|---|---|
column_name FOR ORDINALITY |
为当前输出行生成序号列。 |
column_name ... EXISTS [PATH path_literal] ... |
判断路径上是否存在 JSON 值,返回 0 或 1。 |
column_name ... FORMAT JSON ... [PATH path_literal] ... |
以 JSON 形式提取路径上的值(可配合 ALLOW SCALARS / DISALLOW SCALARS 等子句)。 |
column_name [data_type] [TRUNCATE] [PATH path_literal] ... |
将路径上的 JSON 标量转为指定 SQL 类型(可配合 ON EMPTY / ON ERROR)。 |
NESTED PATH path_literal COLUMNS (...) |
嵌套展开;内层 column_list 可重复上述列定义形式。 |
其中 json_value_on_empty_clause、json_value_on_error_clause 等子句的写法与语义,见 JSON_TABLE 函数。
FILES 基本语法
FILES(location_expr, format_expr [, pattern_expr])