通常,排序是使用排序到顶部的符号完成的,例如0
或*
或&
。这是mysql排序的默认方式;数字和符号,然后是A-Z。但是,这会使通常最丑或格式最差的结果浮动到顶部(例如@#$@3423
或8 inch
或&
的结果。
所以我想做一个修改过的形式,首先是字母A-Z,然后是特殊字符。
我将如何创建这种类型的排序? ORDER BY
子句中的某些内容?
答案 0 :(得分:7)
编辑:原始链接已死。 这是另一个链接,它实际上解释了比第一个链接更好的事情:
http://matthewturland.com/2008/11/05/natural-ordering-in-mysql/
你可以试试这个
SELECT names FROM your_table ORDER BY names + 0 ASC
答案 1 :(得分:6)
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
答案 2 :(得分:0)
这对我有用:
SELECT * FROM `yourTable` ORDER BY `yourDatabase`.`yourColumn` ASC