我当前正在将 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”的字符串的列,并且不区分大小写,因此将获取所有匹配的行。
--
添加回答
举报
0/150
提交
取消