4

我将以下数据存储在 MySQL 表的列中,该表是“json”数据类型(MySQL v5.7.9)

[{"id": "26", "title": "similar1", "score": "0.97"}, {"id": "27", "title": "similar2", "score": "0.87"}, {"id": "28", "title": "similar2", "score": "0.87"}]

我需要一个 MySQL 查询,它将返回所有“标题”值,即相似 1、相似 2 和相似 3 等等

4

3 回答 3

2

使用 JSON_EXTRACT()。

mysql> create table t ( j json );

mysql> insert into t set j = '[{"id": "26", "title": "similar1", "score": "0.97"}, {"id": "27", "title": "similar2", "score": "0.87"}, {"id": "28", "title": "similar2", "score": "0.87"}]';

mysql> select json_extract(j, '$[*].title') from t;
+--------------------------------------+
| json_extract(j, '$[*].title')        |
+--------------------------------------+
| ["similar1", "similar2", "similar2"] |
+--------------------------------------+

如果你想在 MySQL 中使用 JSON 数据,你应该阅读关于搜索 JSON 值的函数的文档,并学习使用 JSON 搜索表达式。

于 2017-12-05T20:22:22.003 回答
0

你可以像下面这样查询

create table testTableforus (datapoint json);
insert into testTableforus
values
 ('{"id": "26", "title": "similar1", "score": "0.97"}'), 
 ('{"id": "27", "title": "similar2", "score": "0.87"}'), 
 ('{"id": "28", "title": "similar2", "score": "0.87"}');

 select datapoint->"$.title" from testTableforus;

drop table testTableforus;

See working demo

于 2017-12-05T20:21:32.170 回答
0

这看起来像一个数据库设计问题。当您真的应该使用另一个表将这些结果存储为单独的列时,您似乎正在使用 json 列。

于 2017-12-05T19:55:13.627 回答