我需要在数据库中存储一个json字符串,并根据json对象的值选择条目。有没有办法用mysql做这个选择? (我使用的是php,mysql 5.1)
答案 0 :(得分:1)
为什么不使用文档数据库而不是MySQL?它们是为此目的而创建的。看看MongoDB。
如果MongoDB不是一个选项,您还可以在Lucene索引中转储相关的数据子集(请参阅Zend_Search_Lucene)并搜索Lucene索引以检索与您的搜索条件匹配的对象的记录ID (之后从MySQL中检索这些)。
答案 1 :(得分:0)
JSON对象基本上是键/值对的列表。如果您事先知道这些键是什么,那么您可以创建一个表,其中这些键名称为列。您拆分JSON并将每个值插入其各自的列中。
如果您事先不知道JSON中的键是什么,那么您可以创建一个包含对象ID,键和值列的表。您将每个键/值对存储在自己的行中。但是,为此编写查询可能更难,但这取决于您要查询的内容。
答案 2 :(得分:0)
MySQL没有本机JSON类型,因此它不知道如何查询JSON值。如果您确实需要能够执行此操作,则需要将JSON数据标准化/序列化为标准MySQL数据类型(例如,将值拆分为多个列和行),或者使用可以实际理解JSON的数据库(例如,CouchDB或MongoDB)。
答案 3 :(得分:0)
使用php 5.2你可以使用php JSON库。您可以考虑在php或MySQL(http://dev.mysql.com/doc/refman/5.1/en/regexp.html)中使用正则表达式来优雅地提取值。
答案 4 :(得分:0)
自5.7.8起,JSON数据类型和支持函数被添加到MySQL。详情请见: