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

从mysql varchar列中选择和排序数字,mysql,sql,Mysql,Sql,我有一个死者数据库;其中一列包含他们的死亡年龄。 由于db“按原样”将信息记录在历史文档中,因此该列包含数字以外的内容。年龄可以输入为“inf.”、“6个月”、“2周”等,也可以为空。大约90%的列是普通的旧数字,如“87”或“2” 我试着重复一张按年龄排序的最年长者的表格。 由于年龄的所有非数值,我的查询是: <?php ... $sql = "SELECT pid,first_name,surname,date,age FROM $table WHERE age REGEXP '^[

我有一个死者数据库;其中一列包含他们的死亡年龄。 由于db“按原样”将信息记录在历史文档中,因此该列包含数字以外的内容。年龄可以输入为“inf.”、“6个月”、“2周”等,也可以为空。大约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";

...
?>

可能重复欢迎StackOverflow。你的问题可以通过提出一般性问题来改进,删除所有不相关的细节。谢谢。完美的
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;