我有一个数据库表,其中一列包含字符串值,看起来像在PHP字典。如何筛选SQL查询结果相匹配的字符串
表:大专
Id name requirement
1 x {"users": ["A", "B"], "name": "*", "pool": "CSE", "place": "Bangalore"}
2 y {"users": ["A", "C"], "name": "*", "pool": "CSE", "place": "Chennai"}
3 z {"users": ["A", "B"], "name": "*", "pool": "ECE", "place": "Bangalore"}
4 r {"users": ["A", "D"], "name": "*", "pool": "EEE", "place": "UP"}
从这个表我只需要滤波器,其中要求列含有“池”的那些行:” CSE”。 这就是说,如果池是CSE或池是ECE等。
目前我用于读取整个表的PHP代码:
$query = "SELECT * FROM waitqueue";
$result = mysql_query($query);
echo "[";
echo json_encode(mysql_fetch_assoc($result));
while ($row = mysql_fetch_assoc($result))
echo "," . json_encode($row);
echo "]";
我不想改变从单一query.So我上面的SQL query.Because我需要两个条件(全表和选择的池行)希望从结果中解析。
如何匹配“池”,我怎么能过滤那些行?
任何一个请建议我。
在此先感谢。
什么是你的MySQL版本? – Mihai
这是一个非常奇怪的体系结构...如果你想使用一个属性进行过滤,那么你不应该将它隐藏在一个序列化的列值深处,而是作为一个单独的列或引用,以便你可以创建一个索引。有一些允许访问json编码列的mysql扩展,但这并不能改变你的架构很奇怪的事实。你应该考虑改变它,因为当前的设置不会缩放。对于快速的解决方法,您可以简单地在'mysql_fetch_assoc()'函数周围创建一个包装函数来进行过滤。 – arkascha
我的SQL版本:5.6.17 –