繁体   English   中英

如何使用匹配的字符串过滤SQL查询结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM