通常,排序是通过排序到顶部的符号来完成的,比如0
or*
或&
。这是mysql排序的默认方式;数字和符号,然后是 AZ。然而,这使得通常最丑陋或格式最差的结果浮到顶部(例如@#$@3423
or8 inch
或的结果&
)。
所以我想做一个修改的形式,首先是字母AZ,最后是特殊字符。
我将如何去创建那种类型?条款中有什么ORDER BY
?
通常,排序是通过排序到顶部的符号来完成的,比如0
or*
或&
。这是mysql排序的默认方式;数字和符号,然后是 AZ。然而,这使得通常最丑陋或格式最差的结果浮到顶部(例如@#$@3423
or8 inch
或的结果&
)。
所以我想做一个修改的形式,首先是字母AZ,最后是特殊字符。
我将如何去创建那种类型?条款中有什么ORDER BY
?
编辑:原始链接已失效。这是另一个链接,它实际上比第一个链接更好地解释了正在发生的事情:
http://matthewturland.com/2008/11/05/natural-ordering-in-mysql/
你可以试试这个
SELECT names FROM your_table ORDER BY names + 0 ASC
Select ...
From ...
Order By Case When Col Like '[0-9]%' Then 1 Else 0 End Asc
, Col
另一种解决特殊字符的解决方案:
Select ...
From ...
Order By Case When Col Like '[A-Z]%' Then 0 Else 1 End Asc
, Col
这对我有用:
SELECT * FROM `yourTable` ORDER BY `yourDatabase`.`yourColumn` ASC