如何使用ORDER BY正确处理数字?

Daw*_*hia 4 mysql sql

我想从mysql表中获取数据,并按其中一个varchar列排序.所以我要说我有这样的查询:

SELECT name, model FROM vehicle ORDER BY model
Run Code Online (Sandbox Code Playgroud)

问题是,对于像这样的'模型'值:'S 43','S 111',顺序将是:

S 111
S 43
Run Code Online (Sandbox Code Playgroud)

因为我认为ORDER BY使用字母顺序规则,对吧?那么如何修改此查询以获得"数字"顺序?'S 43'将在'S 111'之前?无需更改或向此表添加任何数据.

Ale*_*ein 5

像这样的东西:

SELECT name, model 
FROM vehicle 
ORDER BY CAST(TRIM(LEADING 'S ' FROM model) AS INTEGER)
Run Code Online (Sandbox Code Playgroud)

请注意,按功能结果排序并不是一个好习惯,因为它会产生动态的无索引结果,这种结果可能非常慢,尤其是在大型数据集上.