MySQL-如何在JSON数据字段中搜索

德罗

我正在使用支持JSON数据字段的MYSQL 5.7.11。

我的一个表中有一个JSON字段,用于存储产品的价格历史记录:

JSON结构示例:

[{"da": "2016-05-03 08:32", "pr":15.90}] 
[{"da": "2016-03-22 09:02", "pr":14.40}]
[{"da": "2016-03-15 12:08", "pr":40.00}, {"da": "2016-06-28 10:32", "pr":42.00}]
[{"da": "2016-03-29 02:39", "pr":13.90}]
[{"da": "2016-05-03 08:38", "pr":17.90},{"da": "2016-07-19 10:18", "pr":26.80},{"da": "2016-07-19 14:20", "pr":24.80}]

如您所见,它可以在一行中包含多个JSON数组。样本中的每个JSON行代表一个不同的产品。就像第一行价格15.90是苹果,第二行14.40是ORANGE,第三行40.00和42.00是香蕉。只是为了澄清这一点。

我正在寻找的是能够在日期范围之间进行搜索。

就像获取日期A到日期B之间的所有产品价格历史记录一样。

为了进行测试,我尝试执行以下操作:

select json_extract(json_price_history, '$.pr')=13.90 from products

但是它总是返回很多行,而只有NULL。

任何帮助,将不胜感激...

e4c5

JsonPath。

您查询中的jsonpath希望从JSON字典中提取名为pr的元素。但是您的表不包含字典。它具有一个数组,其中每个元素都是一个字典。因此,查询应更改如下:

SELECT JSON_EXTRACT(DICT, '$[*].pr') FROM myjson;

这将显示以下内容:

+---------------------------------------------+
| JSON_UNQUOTE(JSON_EXTRACT(DICT, '$[*].pr')) |
+---------------------------------------------+
| NULL                                        |
| [15.9]                                      |
| [14.4]                                      |
| [40, 42]                                    |
| [13.9]                                      |
| [17.9, 26.8, 24.8]                          |
+---------------------------------------------+

在RDBMS中存储阵列

将数组存储在RDBMS中非常好。但是,如果您发现自己必须在那些数组中搜索某些内容,则意味着您的数据库设计错误。我还没有看到在mysql文档中明确提到的这个问题,但是在postgreql那里您可以得到很多[更高级的json和数组支持] [1]对此非常清楚。

提示:数组不是集合;搜索特定的数组元素可能是数据库设计错误的标志。考虑使用单独的表,其中每个项都有一行,这将是一个数组元素。这将更易于搜索,并且可能会针对大量元素进行更好地缩放。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL-如何在JSON数据字段中搜索

来自分类Dev

如何掩盖MySQL中的数据字段?

来自分类Dev

如何在MySQL中搜索具有JSON值的字段?

来自分类Dev

如何在MySQL中搜索JSON数组字段?

来自分类Dev

PHP脚本选择MySQL数据字段并返回JSON

来自分类Dev

MySQL如何在JSON字段中搜索与JSON值相交的所有行

来自分类Dev

MySQL,在JSon字段中搜索?

来自分类Dev

如何在MySQL(Knex / Bookshelf)的JSON字段中搜索子字符串?

来自分类Dev

如何在MySQL(Knex / Bookshelf)的JSON字段中搜索子字符串?

来自分类Dev

如何在 Mysql 字段中搜索字符串并输入该字段中的任何特殊字符?

来自分类Dev

如何在MySQL中搜索JSON数组包含项

来自分类Dev

如何在mysql JSON中搜索某个属性?

来自分类Dev

如何从mysql中选择最近7天的结果(带有自定义数据字段)?

来自分类Dev

如何在mysql数据库中添加json数据

来自分类Dev

用WP短代码显示来自mySQL的数据字段

来自分类Dev

我如何在Mysql数据库中搜索多个单词搜索

来自分类Dev

如何在Docusign中包装数据字段标签的文本

来自分类Dev

mysql如何从磁盘文件中搜索数据?

来自分类Dev

如何在MySQL中实现这种搜索?

来自分类Dev

如何在mysql命令历史中搜索

来自分类Dev

通过搜索显示MySQL数据库中的字段

来自分类Dev

如何在mysql数据库中输入json文件?

来自分类Dev

如何在MySQL结果中添加字段?

来自分类Dev

在MySQL中的JSON字段上进行全文搜索

来自分类Dev

在MySQL中如何编写SQL在字段中搜索单词?

来自分类Dev

如何在Mysql数据库中的所有表中搜索?

来自分类Dev

如何从 jQuery 中的 json 或数组数据中像 mysql 一样搜索名称

来自分类Dev

在MySQL数据字典中包含外键

来自分类Dev

如果字段在 MySQL 中包含斜杠,如何搜索记录

Related 相关文章

  1. 1

    MySQL-如何在JSON数据字段中搜索

  2. 2

    如何掩盖MySQL中的数据字段?

  3. 3

    如何在MySQL中搜索具有JSON值的字段?

  4. 4

    如何在MySQL中搜索JSON数组字段?

  5. 5

    PHP脚本选择MySQL数据字段并返回JSON

  6. 6

    MySQL如何在JSON字段中搜索与JSON值相交的所有行

  7. 7

    MySQL,在JSon字段中搜索?

  8. 8

    如何在MySQL(Knex / Bookshelf)的JSON字段中搜索子字符串?

  9. 9

    如何在MySQL(Knex / Bookshelf)的JSON字段中搜索子字符串?

  10. 10

    如何在 Mysql 字段中搜索字符串并输入该字段中的任何特殊字符?

  11. 11

    如何在MySQL中搜索JSON数组包含项

  12. 12

    如何在mysql JSON中搜索某个属性?

  13. 13

    如何从mysql中选择最近7天的结果(带有自定义数据字段)?

  14. 14

    如何在mysql数据库中添加json数据

  15. 15

    用WP短代码显示来自mySQL的数据字段

  16. 16

    我如何在Mysql数据库中搜索多个单词搜索

  17. 17

    如何在Docusign中包装数据字段标签的文本

  18. 18

    mysql如何从磁盘文件中搜索数据?

  19. 19

    如何在MySQL中实现这种搜索?

  20. 20

    如何在mysql命令历史中搜索

  21. 21

    通过搜索显示MySQL数据库中的字段

  22. 22

    如何在mysql数据库中输入json文件?

  23. 23

    如何在MySQL结果中添加字段?

  24. 24

    在MySQL中的JSON字段上进行全文搜索

  25. 25

    在MySQL中如何编写SQL在字段中搜索单词?

  26. 26

    如何在Mysql数据库中的所有表中搜索?

  27. 27

    如何从 jQuery 中的 json 或数组数据中像 mysql 一样搜索名称

  28. 28

    在MySQL数据字典中包含外键

  29. 29

    如果字段在 MySQL 中包含斜杠,如何搜索记录

热门标签

归档