为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL JSON 搜索摘录

MySQL JSON 搜索摘录

米脂 2023-08-18 16:52:25
我当前正在将 JSON 对象输入到 MySQL 数据库,然后想要对它们运行查询。所以我有一个如下表:subjects                                                |---------------------------------------------------------|{|"subjects": [{|  "subject":"English Language & Literature",|  "ageRange":["12-18"],|  "examlevel":["13+","gcse","as-level","a-level"],|  "examboard":["aqa","edexcel","ocr","wjec"]|},|{|  "subject":"Creative Writing",|  "ageRange":["8-18"],                                     | Row 1|  "examlevel":null,|  "examboard":null|},|{|  "subject":"Media Studies",|  "ageRange":["14-18"],|  "examlevel":["gcse","as-level","a-level"],|  "examboard":["aqa","edexcel","ocr","wjec"]|}]|}---------------------------------------------------------在我运行的 MySQL 查询中SELECT JSON_EXTRACT(subjects, '$."subjects"') FROM `table_name`我得到这个回应[{"subject": "English Language & Literature", "age...为了获取主题名称,我执行了以下操作......  SELECT JSON_EXTRACT(subjects, '$."subjects[*]."subject"') FROM `table_name` 这返回["English Language & Literature", "Creative Writin...然后我尝试对 JSON 提取运行搜索查询SELECT JSON_EXTRACT(subjects, JSON_UNQUOTE(JSON_SEARCH(subjects, 'all', '{Search Query i.e "E"}', NULL, '$."subjects"[*]."subject"'))) FROM `table_name`这 ^^ 返回 NULL我想进一步询问这个问题。因此,我想最终从该对象组中每个主题的每个 JSON 对象中提取主题名称。实际上,当您搜索主题时,它会搜索每行的每个 JSON 对象中每个主题字段的主题名称,以获得与搜索查询相关的结果。我查看了 MySQL 文档,但没有太大帮助... - 现在我已经提取了提取的 JSON 数据,如何对它们运行搜索?然后仅检索与该搜索查询匹配的内容。
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

在评论的帮助下,我找到了可行的答案。

当输入的字符串与您要查找的内容完全匹配时,这将获取列。

SELECT JSON_EXTRACT(subjects, JSON_UNQUOTE(JSON_SEARCH(subjects,'all','Creative Writing', NULL, '$."subjects"[*]."subject"'))) FROM `table_name`

--

SELECT JSON_EXTRACT(subjects, JSON_UNQUOTE(JSON_SEARCH(LOWER(subjects),'all',LOWER('%eng%'), NULL, '$."subjects"[*]."subject"'))) FROM `table_name`

这将获取包含字符“eng”的字符串的列,并且不区分大小写,因此将获取所有匹配的行。

--


查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信