值存储在COMPANY_ID像如何申请WHERE子句重新排列或jscon编码值
["2"]
["2", "1"]
其中2和1是公司的ID。现在我想要所有ID 2的结果。我怎么能再次查询json编码的数据。
select * from tbl where company_id = 2
这是我需要执行的。
欲了解更多信息,JSON格式是动态的结果(通过数据库中的值填写)在Zend2选择列表。
如果是数组而不是json,那么这个简单的select查询可以如何执行。
值存储在COMPANY_ID像如何申请WHERE子句重新排列或jscon编码值
["2"]
["2", "1"]
其中2和1是公司的ID。现在我想要所有ID 2的结果。我怎么能再次查询json编码的数据。
select * from tbl where company_id = 2
这是我需要执行的。
欲了解更多信息,JSON格式是动态的结果(通过数据库中的值填写)在Zend2选择列表。
如果是数组而不是json,那么这个简单的select查询可以如何执行。
由于每个ID是双引号里面一个数字,你可以只用一个LIKE
语句查询:
select * from tbl where company_id LIKE '%"2"%'
而如果它是数组,而不是JSON,这个简单的选择查询如何执行。
您可以将JSON存储到mysql数据库中,因为它是一个字符串。但是一个数组不是一个字符串,所以你不能将它存储在那里。你需要序列化它,但为此你应该更喜欢JSON。
另一种方法是创建一个表格来存储与公司的关系。
MySQL有一个叫SET
您可以在此任务中使用此数据类型的数据类型。这将允许您输入逗号分隔值并仍然可以按照单个项目进行查询。
手册:http://dev.mysql.com/doc/refman/5.0/en/set.html
您的查询将不得不进行更新,以这样的事:
SELECT * FROM tbl_name WHERE FIND_IN_SET('2', company_id);
但是,这个问题的出现是因为表不正确标准化。当应用程序达到大规模时,添加参考表并查询此参考表将是更好的选择。
你试过了吗?像'2%'这样的company_id和'%2'一样的company_id(用于确保你不会得到22)看一些其他的例子http://www.techonthenet.com/sql/like.php – 2013-04-09 14:31:52
非关系存储像这需要一些黑客...可以做'WHERE company_id LIKE'%“2”%''。 – phpisuber01 2013-04-09 14:33:30
你真的应该考虑数据库的规范化。从长远来看,这非常容易。 – bestprogrammerintheworld 2013-04-09 14:42:09