JSON_SEARCH
📄字数 1.1K
👁️阅读量 加载中...
功能描述
从JSON文本中查找给定字符串的路径表达式。
语法格式
sql
JSON_SEARCH( json_doc, one_or_all, search_str[, escape_char[, path]...] )
输入参数
json_doc
:JSON文本,JSON类型或字符类型。one_or_all
:匹配出现该值的一个路径还是全部路径,字符类型。search_str
:需要搜索的字符串。字符类型。escape_char
:转义符,字符类型。path
:路径表达式,字符类型。
输出结果
JSON类型。
提示
json_doc
或search_str
或path
为NULL时,输出结果为NULL。- 对路径存在值的情况,使用新值覆盖原有值,若路径不存在值,则路径与值被忽略。
one_or_all
参数不为one
或者all
中的一个,则会抛出错误。search_str
可以带%
和_
字符做like运算。escape_char
默认值为\
,必须为一个常数,null、空串或一个字符。- 以下情况将导致系统抛出错误:
1.json_doc
是无效的JSON文档。
2. 任何path
是无效的路径表达式。
示例
sql
-- 搜索字符串
SQL> SELECT JSON_SEARCH('[{"name": "Tim","age": 20,"hobbies": [{ "name": "Car", "weight": 10 },{ "name": "Sports", "weight": 20 }]},
{"name": "Tom","age": 20,"hobbies": [{ "name": "Reading", "weight": 10 },{ "name": "Sports", "weight": 20 }]}]', 'one', 'Tim');
+-------------+
| EXPR1 |
+-------------+
| "$[0].name" |
+-------------+
-- one与all对比
SQL> SELECT JSON_SEARCH('[{"name": "Tim","age": 20,"hobbies": [{ "name": "Car", "weight": 10 },{ "name": "Sports", "weight": 20 }]},
{"name": "Tom","age": 20,"hobbies": [{ "name": "Reading", "weight": 10 },{ "name": "Sports", "weight": 20 }]}]', 'one', 'Sports'),
JSON_SEARCH('[{"name": "Tim","age": 20,"hobbies": [{ "name": "Car", "weight": 10 },{ "name": "Sports", "weight": 20 }]},
{"name": "Tom","age": 20,"hobbies": [{ "name": "Reading", "weight": 10 },{ "name": "Sports", "weight": 20 }]}]', 'all', 'Sports');
+------------------------+--------------------------------------------------+
| EXPR1 | EXPR2 |
+------------------------+--------------------------------------------------+
| "$[0].hobbies[1].name" | ["$[0].hobbies[1].name", "$[1].hobbies[1].name"] |
+------------------------+--------------------------------------------------+
-- 使用通配符
SQL> SELECT JSON_SEARCH('[{"name": "Tim","age": 20,"hobbies": [{ "name": "Car", "weight": 10 },{ "name": "Sports", "weight": 20 }]},
{"name": "Tom","age": 20,"hobbies": [{ "name": "Reading", "weight": 10 },{ "name": "Sports", "weight": 20 }]}]', 'all', 'S%');
+--------------------------------------------------+
| EXPR1 |
+--------------------------------------------------+
| ["$[0].hobbies[1].name", "$[1].hobbies[1].name"] |
+--------------------------------------------------+