我的数据库中有一个文本列,用于存储房屋名称和编号列表,当我按照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"
如果是我的网站,我会有两个列一个用于名称,另一个用于数字但我无法更改它,因为它是一个实时网站
答案 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);