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"] |
+--------------------------------------------------+