040, 044P, 041BL, 041W, 041PB
^^ 这是使用 Order By 子句出来的顺序。
我认为这应该是它的显示方式:
040, 041BL, 041PB, 041W, 044P
我知道以前一定有人问过类似的问题,但我还是什么都想不通!
编辑:在 XLant 的评论之后,我意识到我的错误。因此,简单的 order by 子句适用于上面给出的测试用例。但是,如果 GolezTrol 提到的位数并不总是 3,那么情况仍然很复杂。在这种情况下应该怎么做?
尝试:
SELECT string,
@num := CONVERT(string, signed) AS num_part,
Substring(Trim(LEADING '0' FROM string), Length(@num) + 1) AS rest_of_string
FROM table1
ORDER BY num_part,
rest_of_string
这样,数字仍将按其数值排序(不考虑前导 0)。
见小提琴。
尝试LPAD()
功能 - 但请记住LPAD
修剪数字。