我目前正在将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数据,我如何对它们运行搜索?然后仅检索与该搜索查询匹配的查询。
发布于 2020-11-20 00:30:41
在评论的帮助下,我找到了一些有用的答案。
当输入的字符串与您要查找的字符串完全匹配时,这将获取列。
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‘且不区分大小写的字符串的列,因此将获取所有匹配的行。
--
https://stackoverflow.com/questions/64911225
复制相似问题