0

我有一个数据库,其中包含一系列不同年龄段的人。在数据库中,年龄数据显示 6 个月为 6m,5 年为 5y,等等。我需要能够过滤我的数据,所以我只能看到 5 岁以下的年龄组。这就是我的 PHP 现在的样子。

$query = "SELECT DISTINCT code, minimumAge, description
          FROM recalls
          WHERE startBasis='age'
          ORDER BY code";
while ($row = mysql_fetch_array($result))
{
    if($row['minimumAge'] <= 5) {
        echo "<option value='" . $row['code'] . "'> "
          . $row['code'] . " " . $row['minimumAge'] . " " . $row['description'] 
          . "</option>";
    }

目前,如果您有 6m 岁的人,它不会显示,因为数字高于 5,我如何让它包含 5y 岁以下但 5m 岁以上的人的信息?

4

2 回答 2

1

如果您只想查询具有 minimumAge 的记录,例如“5y”或“4y”或“4y 3m”或“9m”等,您可以REGEXP在选择查询中使用运算符(http://dev.mysql.com/doc/refman /5.0/en/regexp.html ):

$query = "SELECT DISTINCT code,minimumAge,description FROM recalls WHERE startBasis='age' AND minimumAge REGEXP '^([0-5]y|[0-9]m)|([0-5]y [0-9]m)&' ORDER BY code";
于 2012-07-10T09:42:53.267 回答
0

或者也许没有正则表达式,只是从 WHERE 子句中的 minimumAge 中获取第一个字符 .. ?

懒得完全/彻底地检查它..但是想着以下几点:

SELECT DISTINCT code, minimumAge, description
FROM recalls
WHERE startBasis='age'
AND ( 1 * SUBSTR( minimumAge , 1 , 1 ) ) < 6
ORDER BY code

所以,没有经过测试和东西。

于 2012-10-02T16:48:18.710 回答