[英]how to filter sql query results with matching string
我有一个数据库表,其中一列包含的字符串值看起来像php中的字典。
表:大专
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"}
从此表中,我只需要过滤需求列中包含“ pool”:“ CSE”的那些行。 也就是说,如果pool是CSE或pool是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 "]";
我不想更改上述SQL查询。因为我需要从单个查询中同时满足两个条件(全表和选定的池行),所以我希望从结果中进行解析。
如何匹配“池”,如何过滤这些行?
任何人都可以建议我。
提前致谢。
在您的情况下,您可以像这样过滤
WHERE requirement LIKE '%"pool": "CSE"%'
但这是一个很大的拐杖:)
最好将列要求与列分开:名称,池,位置。 比起您可以像这样进行过滤,例如:
WHERE pool = "CSE"
另一种方法是像这样在while周期中过滤行
$output = '';
while ($row = mysql_fetch_assoc($result)) {
$requirement = json_decode($row['requirement'], true);
if ($requirement['pool'] === 'CSE') {
$output .= $output ? ', ' : '';
$output .= json_encode($row);
}
}
$output = '[' . $output . ']';
echo $output;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.