适用于: Databricks SQL
Databricks Runtime 15.3 及更高版本
从 type
指定的 variantExpr
中提取类型为 path
的值,如果无法将值强制转换为目标类型,则提取 NULL
。
try_variant_get ( variantExpr, path, type )
variantExpr
:一个VARIANT
表达式。path
:一个STRING
文本,其中包含格式正确的 JSON 路径表达式。type
:定义类型的STRING
文本。
一个 type
类型的值。
如果找不到该对象或者无法将其强制转换为 type
,则返回 NULL
。
要在强制转换失败时引发错误,请使用 variant_get。
-- Simple example
> SELECT try_variant_get(parse_json('{"key": 123, "data": [4, {"a": "hello"}, "str"]}'), '$.data[1].a', 'string')
hello
-- missing path
> SELECT try_variant_get(parse_json('{"key": 123, "data": [4, {"a": "hello"}, "str"]}'), '$.missing', 'int')
null
-- Invalid cast
> SELECT try_variant_get(parse_json('{"key": 123, "data": [4, {"a": "hello"}, "str"]}'), '$.key', 'boolean')
null
-- These are synonymous to:
> SELECT '{"key": 123, "data": [4, {"a": "hello"}, "str"]}':data[1].a ?::STRING;
hello
> SELECT '{"key": 123, "data": [4, {"a": "hello"}, "str"]}':missing ?::STRING;
null
> SELECT '{"key": 123, "data": [4, {"a": "hello"}, "str"]}':key ?::BOOLEAN;
null