Logo 专业的 数据库*大数据*数据挖掘 产品及方案提供商

导航

  • »
  • 数据库开发手册 »
  • SQL语言手册 »
  • 函数 »
  • JSON函数 »

JSON_SEARCH()¶

简介¶

返回JSON文档中给定字符串的路径。

语法¶

JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])

说明¶

1. json_doc:传入的json数据

2. one_or_all:参数对搜索的影响如下:

(1)one:搜索在第一个匹配后终止,并返回一个路径字符串。

(2)all:搜索返回所有匹配的路径字符串,不包含重复路径。如果有多个字符串,它们将自动包装为一个数组。

3. search_str:搜索参数

(1)escape_char:指定转义符。escape_char 参数必须是常量(为空或者一个字符),当escape_char参数为NULL或者空字符串的情况下,系统默认使用\作为转义字符。

(2)path:指定搜索的路径。

注解

在search_str搜索字符串参数中,%和_字符的工作原理:%匹配任意数量的字符(包括0个字符),而_只匹配一个字符,若要在搜索字符串中指定字面值%或_字符,请在其前面加上转义字符\。

注解

如果json_doc, search_str或path参数为NULL,或文档中不存在路径,或search_str未找到,则返回NULL。

如果json_doc参数不是一个有效的JSON文档,任何路径参数都不是一个有效的路径表达式,one_or_all不是'one'或'all',或escape_char不是一个常量表达式,则会发生错误。

示例¶

-- 搜索到一个路径后返回
SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]', 'one', 'abc');
JSON_SEARCH(text)      |
-----------------------
"$[0]"                 |
总数目:1

-- 搜索全部路径
SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]', 'all', 'abc');
JSON_SEARCH(text)      |
-----------------------
["$[0]", "$[2].x"]     |
总数目:1

-- 模糊查询
SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]', 'all', '%c');
JSON_SEARCH(text)      |
-----------------------
["$[0]", "$[2].x"]     |
总数目:1

SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]', 'all', 'a_c');
JSON_SEARCH(text)      |
-----------------------
["$[0]", "$[2].x"]     |
总数目:1

-- 数据中含有%和_
SELECT JSON_SEARCH('["a_bc", [{"k": "10"}, "def"], {"x":"a%c"}, {"y":"bcd"}]', 'all', 'a\_bc');
JSON_SEARCH(text)      |
-----------------------
"$[0]"                 |
总数目:1

SELECT JSON_SEARCH('["a_bc", [{"k": "10"}, "def"], {"x":"a%c"}, {"y":"bcd"}]', 'all', 'a\%c');
JSON_SEARCH(text)      |
-----------------------
"$[2].x"               |
总数目:1

-- 在指定路径下查询,且使用默认转义符
SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]', 'all', 'abc',NULL,'$[2]');
JSON_SEARCH(text)      |
-----------------------
"$[2].x"               |
总数目:1

SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]', 'all', 'abc','','$[2]');
JSON_SEARCH(text)      |
-----------------------
"$[2].x"               |
总数目:1

-- 在指定路径下查询,不使用默认转义符,将x设为转义符
SELECT JSON_SEARCH('["abc", [{"k": "10"}, "def"], {"x":"a_b%c"}, {"y":"bcd"}]', 'all', 'ax_bx%c','x','$[2]');
JSON_SEARCH(text)      |
-----------------------
"$[2].x"               |
总数目:1

导航

  • »
  • 数据库开发手册 »
  • SQL语言手册 »
  • 函数 »
  • JSON函数 »
    © 版权所有 2024, 天津神舟通用数据技术有限公司.
    最后更新于 Dec 17, 2024.