适用于:
Databricks SQL
Databricks Runtime 15.3 及更高版本
重要
此功能目前以公共预览版提供。
表示半结构化数据。
注释
Iceberg v2 表不支持 VARIANT 列。 Apache Iceberg v3 支持 VARIANT 列。 请参阅 使用 Apache Iceberg v3 功能。
语法
VARIANT
限制
该类型支持存储半结构化数据和OBJECTARRAY标量类型。
存储STRUCTMAP元素,并使用to_variant_object函数。
MAP 键的类型必须为 STRING。
文本
有关创建parse_json值的详细信息,请参阅函数。
还可以使用 CAST 函数将某种类型的文本转换为 VARIANT。
备注
- 要从
VARIANT中提取值,可以使用-
variant_get函数 使用 JSON 路径表达式 遍历复杂类型。 -
:(冒号)运算符用于通过 JSON 路径表达式解析VARIANT。 -
try_variant_get函数,用于使用 JSON 路径导航到复杂类型中,且具备容错机制。 -
cast函数 或::(两个冒号)运算符,可将VARIANT转换为特定类型。 -
try_cast函数 用于将VARIANT转换为具有错误容忍的特定类型。
-
- 要检查
VARIANT值的类型,请使用-
schema_of_variant对单个值的函数。 -
schema_of_variant_agg值的集合的聚合函数。
-
示例
> SELECT parse_json('{"key": 123, "data": [4, 5, "str"]}');
{"data":[4,5,"str"],"key":123}
> SELECT parse_json(null);
null
> SELECT parse_json('123');
123
> SELECT CAST(123.456 AS VARIANT);
123.456
> SELECT to_variant_object(map('key', 'val'));
{ "key": "val" }
> SELECT to_variant_object(struct('field', 'val'));
{ "field": "val" }