从mysql varchar列中选择和排序数字

时间:2017-08-15 10:11:00

标签: mysql sql

我有一个死者的数据库;其中一列包含他们的死亡年龄。 由于db“按原样”在历史文档中记录信息,因此该列包含除数字之外的其他内容。年龄可以输入为“inf。”,“6 mos。”,“2 wks”。等,或者是空的。大约90%的列是普通的旧数字,如“87”或“2”。

我正在试图回应一个按年龄排序的最老的人的表格。 由于年龄的所有非数字值,我的查询是:

<?php
...

$sql = "SELECT pid,first_name,surname,date,age
FROM $table
WHERE age REGEXP '^[0-9]+$'
ORDER BY age DESC
LIMIT 10";

...
?>

90岁以后的结果总是9岁时死亡的孩子。该栏目按字母顺序排序。

如何按降序排序?

1 个答案:

答案 0 :(得分:2)

SELECT pid,first_name,surname,date,CAST(age as SIGNED) AS int_age
FROM table1
WHERE age REGEXP '^[0-9]+$'
ORDER BY int_age DESC
LIMIT 10;