按文字和数字排序

时间:2014-02-28 11:21:59

标签: mysql sql

我的数据库中有一个文本列,用于存储房屋名称和编号列表,当我按照ASC订购时,它会输出如下:

"Name No 1"
"Name No 12"
"Name No 14"
"Name No 5"
"Name No 7"

是否有一种简单的方法可以按照实际顺序对其进行排序:

"Name No 1"
"Name No 5"
"Name no 7"
"Name No 12"
"Name No 14"

如果是我的网站,我会有两个列一个用于名称,另一个用于数字但我无法更改它,因为它是一个实时网站

3 个答案:

答案 0 :(得分:3)

ORDER BY LENGTH(colname) ASC, colname ASC

这可能就像你要达到“正确的秩序”一样接近。

答案 1 :(得分:1)

试试这个

SELECT 
    col1
FROM 
    Table1
ORDER BY 
    LENGTH(col1), col1

答案 2 :(得分:0)

表中的房屋名称列是否遵循相同的模式? 如果是这样,您可以使用 SUBSTRING 功能

SELECT house_name FROM  houseTbl order by convert((substr(house_name ,9),unsigned);