📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

JSON 函数



本节提供 TiDB Cloud Lake 中 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使用大括号键路径提取嵌套值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 中移除空值STRIP_NULL_VALUE('{"a":1,"b":null}') → {"a":1}
JSON_STRIP_NULLS从 JSON 对象中移除空值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

文档内容是否有帮助?