2017-08-15 57 views
-2

我有一個死亡人員的數據庫;其中一列包含他們在死亡時的年齡。 由於db將信息按「原樣」記錄在歷史文檔中,因此該列包含數字以外的內容。年齡可以輸入爲「inf。」,「6 mos。」,「2 wks」。或者是空的。大約90%的列是普通的舊數字,如「87」或「2」。從mysql varchar列中選擇和排序數字

我試圖回顯出最老的人的表格,按年齡排序。 由於年齡的所有非數值的我的查詢是:

<?php 
... 

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

... 
?> 

90週歲後的結果總是孩子誰死9歲的列進行排序,排名不分先後。

如何按降序編號排序?

+3

[SQL命令字符串作爲數](https://stackoverflow.com/questions/11808573/sql-order-string-as-number) –

+0

歡迎的StackOverflow的可能的複製。您可以通過詢問帶有所有不相關細節的通用問題來改進您的問題。 –

回答

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; 
+0

謝謝。完善。 – Dumarest