使用不区分大小写的搜索(使用MySQL Json_search函数)获取JSON数据内的值的路径表达式

时间:2018-10-25 11:55:44

标签: mysql json mysql-json

我有一个需求,我需要在其中从按值搜索的JSON数据中提取JSON路径表达式。

例如,如果我将JSON数据存储为

SET @j = '[{"name":"Kiran Muralee", "age" : 30 , "Salary" : 30000},
      {"Name":"Arun Babu", "age" : 35 , "Salary" : 60000}]';

如果我需要获取值'Arun Babu'的JSON路径,我可以使用

SELECT JSON_SEARCH(@j, 'all', 'Arun Babu');

这将导致

"$[1].Name"

哪个是正确的,但是问题是如果我使用值'arun babu'搜索,它将返回NULL。因此,我使用

进行不区分大小写的搜索
SELECT JSON_SEARCH(lower(@j), 'all', lower('arun babu'));

所以现在我得到的结果是

"$[1].name"

但这不是我所需要的,因为现在结果也以小写形式输出,我需要结果为
     “ $ [1]。名称” 谁能建议一个好的解决方案或方法。

使用的MySQL版本是5.7(支持JSON类型的版本)

1 个答案:

答案 0 :(得分:1)

我们可以使用不区分大小写的排序规则来获得预期的解决方案:

SELECT JSON_SEARCH(@j , 'all', 'arun babu' COLLATE utf8mb4_general_ci);

db-fiddle