首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL JSON搜索摘要

问MySQL JSON搜索摘要
EN

Stack Overflow用户
提问于 2020-11-19 19:59:24
回答 1查看 89关注 0票数 0

我目前正在将JSON对象输入到MySQL数据库中,然后想对它们运行查询。所以我有一个如下的表格:

代码语言:javascript
复制
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查询中

代码语言:javascript
复制
SELECT JSON_EXTRACT(subjects, '$."subjects"') FROM `table_name`

我得到的回应是

代码语言:javascript
复制
[{"subject": "English Language & Literature", "age...

为了获得主题名称,我执行了以下操作...

代码语言:javascript
复制
  SELECT JSON_EXTRACT(subjects, '$."subjects[*]."subject"') FROM `table_name` 

这将返回

代码语言:javascript
复制
["English Language & Literature", "Creative Writin...

然后,我尝试对JSON摘录运行搜索查询

代码语言:javascript
复制
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数据,我如何对它们运行搜索?然后仅检索与该搜索查询匹配的查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 00:30:41

在评论的帮助下,我找到了一些有用的答案。

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

代码语言:javascript
复制
SELECT JSON_EXTRACT(subjects, JSON_UNQUOTE(JSON_SEARCH(subjects,'all','Creative Writing', NULL, '$."subjects"[*]."subject"'))) FROM `table_name`

--

代码语言:javascript
复制
SELECT JSON_EXTRACT(subjects, JSON_UNQUOTE(JSON_SEARCH(LOWER(subjects),'all',LOWER('%eng%'), NULL, '$."subjects"[*]."subject"'))) FROM `table_name`

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

--

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64911225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档