我有一个数据库,其中包含一系列具有年龄组的人。在数据库中,年龄数据显示6个月6米,5年5年等等。我需要能够过滤我的数据,所以我只能看到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>";
}
如果你有一个年龄为600万的人,因为这个数字高于5而不能出现,我怎么能把它包含在5岁以下但超过5米的人的信息中呢? / p>
答案 0 :(得分:1)
如果您只想查询minimalAge的记录,如'5y'或'4y'或'4y 3m'或'9m'等等
您可以在选择查询(http://dev.mysql.com/doc/refman/5.0/en/regexp.html)中使用REGEXP
运算符:
$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";
答案 1 :(得分:0)
或许没有正则表达式只是从WHERE子句中的minimumAge获取第一个字符..?
懒得完全/彻底地检查它......但是想出了以下几点:
SELECT DISTINCT code, minimumAge, description
FROM recalls
WHERE startBasis='age'
AND ( 1 * SUBSTR( minimumAge , 1 , 1 ) ) < 6
ORDER BY code
所以,没有经过测试和填充。