列名称为数字的SQL表ORDER BY

列名称为数字的SQL表ORDER BY,sql,sqlite,sql-order-by,Sql,Sqlite,Sql Order By,我想用ASC顺序从SQL表中获取数据。但是,这些列的值如下 Route 1 Route 2 Route 3 Route 10 Route 11 etc. 所以,当我使用ASC的订单时,它将按照 Route 1 Route 10 Route 11 Route 2 Route 3 etc. 如何解决此问题?在SQLite中,提取子字符串并将其转换为数字的语法是: SELECT * FROM MyTable ORDER BY CAST(substr(MyColumn, 7) AS INT) 您

我想用ASC顺序从SQL表中获取数据。但是,这些列的值如下

Route 1
Route 2
Route 3
Route 10
Route 11 etc. 
所以,当我使用ASC的订单时,它将按照

Route 1
Route 10
Route 11
Route 2
Route 3 etc.

如何解决此问题?

在SQLite中,提取子字符串并将其转换为数字的语法是:

SELECT * FROM MyTable ORDER BY CAST(substr(MyColumn, 7) AS INT)

您需要一个自然排序,但还没有告诉我们您使用的是哪一个DB。实际上,我使用的是SQLiteDuplicate of?所有字符串都以ROUTE开头吗?路由后的每个字符都是数字字符吗?如果是这样,那么按CONVERTINT、SUBSTRINGcolumnName、7、LENcolumnName-6排序如何?由于数据类型是varchar而不是int,所以按这种方式排序。您需要提取数字部分并将其转换为整数进行排序。类似于Convertint的顺序,列。