跳到主要内容

JSON 函数

本节提供 Databend 中 JSON 函数的参考信息。JSON 函数支持解析、验证、查询和操作 JSON 数据结构。

JSON 解析与验证​

函数描述示例
PARSE_JSON将 JSON 字符串解析为 VARIANT 值PARSE_JSON('{"name":"John","age":30}') → {"name":"John","age":30}
CHECK_JSON验证字符串是否为有效 JSONCHECK_JSON('{"valid": true}') → true

JSON 类型信息​

函数描述示例
JSON_TYPEOF返回 JSON 值的类型JSON_TYPEOF('{"key": "value"}') → 'OBJECT'

JSON 转换​

函数描述示例
JSON_TO_STRING将 JSON 值转换为字符串JSON_TO_STRING({"name":"John"}) → '{"name":"John"}'

JSON 路径操作​

函数描述示例
JSON_PATH_EXISTS检查 JSON 路径是否存在JSON_PATH_EXISTS('{"a":1}', '$.a') → true
JSON_PATH_MATCH按路径模式匹配 JSON 值JSON_PATH_MATCH('{"items":[1,2,3]}', '$.items[*]') → [1,2,3]
JSON_PATH_QUERY使用 JSONPath 查询 JSON 数据JSON_PATH_QUERY('{"a":1,"b":2}', '$.a') → 1
JSON_PATH_QUERY_ARRAY查询 JSON 数据并以数组形式返回结果JSON_PATH_QUERY_ARRAY('[1,2,3]', '$[*]') → [1,2,3]
JSON_PATH_QUERY_FIRST返回 JSON 路径查询的第一个结果JSON_PATH_QUERY_FIRST('[1,2,3]', '$[*]') → 1

JSON 数据提取​

函数描述示例
GET按索引或字段名从 JSON 提取值GET('{"name":"John"}', 'name') → "John"
GET_IGNORE_CASE以不区分大小写的方式按字段名提取值GET_IGNORE_CASE('{"Name":"John"}', 'name') → "John"
GET_BY_KEYPATH使用 {segment} 键路径提取嵌套值GET_BY_KEYPATH('{"user":{"name":"Ada"}}', '{user,name}') → "Ada"
GET_PATH使用路径表示法提取值GET_PATH('{"user":{"name":"John"}}', 'user.name') → "John"
JSON_EXTRACT_PATH_TEXT使用路径从 JSON 提取文本值JSON_EXTRACT_PATH_TEXT('{"name":"John"}', 'name') → 'John'
JSON_EACH将 JSON 对象展开为键值对JSON_EACH('{"a":1,"b":2}') → [("a",1),("b",2)]
JSON_ARRAY_ELEMENTS将 JSON 数组展开为单个元素JSON_ARRAY_ELEMENTS('[1,2,3]') → 1, 2, 3
JQ使用 jq 风格查询处理 JSONJQ('{"name":"John"}', '.name') → "John"

JSON 格式化与处理​

函数描述示例
JSON_PRETTY以适当缩进格式化 JSONJSON_PRETTY('{"a":1}') → 格式化后的 JSON 字符串
STRIP_NULL_VALUE将 JSON 的 null 值转换为 SQL 的 NULL 值STRIP_NULL_VALUE(parse_json('null')) → NULL
JSON_STRIP_NULLS从 JSON 对象中移除 null 值JSON_STRIP_NULLS(PARSE_JSON('{"a":1,"b":null}')) → {"a":1}

JSON 包含与键检测​

函数描述示例
JSON_CONTAINS_IN_LEFT判断左侧 JSON 是否包含右侧 JSONJSON_CONTAINS_IN_LEFT('{"a":1,"b":2}', '{"b":2}') → true
JSON_EXISTS_KEY检查单个键是否存在JSON_EXISTS_KEY('{"a":1}', 'a') → true
JSON_EXISTS_ANY_KEYS只要键列表中任意一个存在即返回 trueJSON_EXISTS_ANY_KEYS('{"a":1}', ['x','a']) → true
JSON_EXISTS_ALL_KEYS仅当所有键都存在时返回 trueJSON_EXISTS_ALL_KEYS('{"a":1,"b":2}', ['a','b']) → true
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验