3

我有一个要求,我需要从按值搜索的 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].Name" 任何人都可以提出一个好的解决方案或方法。

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

4

1 回答 1

1

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

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

db小提琴

于 2018-10-25T14:02:49.540 回答