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

标签 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类型的版本)

最佳答案

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

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

db-fiddle

关于mysql - 使用 MySQL Json_search 函数使用不区分大小写的搜索获取 JSON 数据中值的路径表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988706/

相关文章:

MYSQL查询查找薪水第n高的所有员工

java - 将 POST 数据从 Android 应用程序发送到 PHP MySQL

c# - 无法使用c#将json结果反序列化为自定义列表对象

mysql - 使用 MySQL 语法更新 json 数组中 json 对象的特定键/值

php - 生成的 MySQL 'AND' select 的行为类似于 'OR' select

php - 在 mysqli 准备好的语句中使用空值

json - 如何格式化 ESRI REST 服务器的 json url 查询中的 esriFieldTypeDate 参数

mysql - 从对象数组中选择与 MYSQL JSON 中的属性匹配的对象

MySQL 5.7 : convert simple JSON_ARRAY to rows

php - 在php中仅删除mysql表的一行的一个字段