JSON_SEARCH
功能描述
JSON_SEARCH函数返回JSON文档中指定字符串的路径。
返回值类型为text,V2.2 Build 15 (Patch No.4)及以上版本返回值类型为json。
注意事项
- 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
- 转义符如果为boolean型相当于 NULL,默认
\
为转义符,可以直接输入个位数整型作为转义符。 - 目标json文件和目标字符串不能为空,路径不能含空,如果path不存在则返回空。
语法格式
JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])
参数说明
json_doc
JSON文档,它可以是一个JSON字符串,或者一个JSON列。
search_str
搜索字符串参数。
可以直接输入整型、浮点型、boolean型进行匹配,但是只能匹配目标文件中的字符串,支持
%字符串
模糊查询。escape_char
指定常量表达式。
path
路径参数。
one_or_all
one_or_all只能输入one或all。
- one:在第一次匹配后搜索终止并返回一个路径字符串。
- all:搜索返回所有匹配的路径字符串,不会包含重复的路径。如果有多个字符串,它们会自动包裹为一个数组。数组元素的顺序不保证是有序的。
示例
select json_search('"abc"','one','abc',true);
select json_search('"1.2"','one',1.2);
select json_search('{"a":[{"b":["abc","abc"]},"ac"],"c":["abbc","abcc"]}','all','a%c',null,'$.*[*]');
返回结果为:
json_search
-------------
"$"
(1 row)
json_search
-------------
"$"
(1 row)
json_search
--------------------------------------------------------------
["$.a[0].b[0]", "$.a[0].b[1]", "$.a[1]", "$.c[0]", "$.c[1]"]
(1 row)