Javascript MySQL JSON搜索提取

Javascript MySQL JSON搜索提取,javascript,mysql,json,database,extract,Javascript,Mysql,Json,Database,Extract,我目前正在将JSON对象输入一个MySQL数据库,然后想对它们运行查询。所以我有一张表,如下所示: subjects | --------------------------------------------------------- |{ |"subjects": [{ | "subject":"English Language & Lit

我目前正在将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`
此^^返回空值

我想进一步质疑这一点。因此,我希望最终从这个对象组中每个主题的每个JSON对象中提取主题名。实际上,当您搜索主题时,它会搜索每行每个JSON对象中每个主题字段的主题名称,以获得与搜索查询相关的结果


我已经看过MySQL文档了,但没有什么帮助…-现在我已经提取了提取的JSON数据,如何对它们进行搜索?然后只检索与该搜索查询匹配的答案。

在评论的帮助下,这里是我找到的有效答案

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

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

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


--

在插入查询时显示明确的
{Search Query,即“e”}
值。我认为您可以简单地将dquotes添加到字符串文本中。。。另一方面,您希望“通过确定值所在的路径选择一个值”——即,您希望找到用于搜索的条件的值。。这有点奇怪。@Akina,真是太棒了,它起作用了!谢谢你。所以我有一个满是JSON值的数据库,就像上面这样,基本上,在站点上,对于全局搜索,当搜索输入文本时,它会找到包含JSON中主题名称的行,获取前4个,然后显示,然后抓住左边的单个列并显示。有道理?如果有更好的方法的话,我会提出建议。。。我们曾经考虑过使用生成的列,但并不适合我们试图实现的目标。
SELECT JSON_EXTRACT(subjects, JSON_UNQUOTE(JSON_SEARCH(LOWER(subjects),'all',LOWER('%eng%'), NULL, '$."subjects"[*]."subject"'))) FROM `table_name`