我目前有一个简单的MySQL选择与order by
名为postcodes
列。这些邮编是英国。MySQL排序英国邮政编码
它目前正在按此顺序输出:SE1, SW1, SE10, SE11, SE2, SW2, SE3
。我知道使用ABS()
会纠正数字排序,但我不确定在这种情况下我该怎么做,因为有字母和数字。
我想在下面的顺序来显示它们:
SE1, SE2, SE3 SE10, SE11, SW1, SW2
感谢您的帮助。
我目前有一个简单的MySQL选择与order by
名为postcodes
列。这些邮编是英国。MySQL排序英国邮政编码
它目前正在按此顺序输出:SE1, SW1, SE10, SE11, SE2, SW2, SE3
。我知道使用ABS()
会纠正数字排序,但我不确定在这种情况下我该怎么做,因为有字母和数字。
我想在下面的顺序来显示它们:
SE1, SE2, SE3 SE10, SE11, SW1, SW2
感谢您的帮助。
您可以在表格中添加一些额外的列以在其中包含片段,并使用第三列进行排序以返回订单。例如:
PostCodeTable
|---------------------------------------------|
|postCode| codePart1 | codePart2 | codePart3 |
|char() | char() | int() | whatever() |
|---------------------------------------------|
| SE1 | SE | 1 | |
| SW1 | SW | 10 | |
| SE10 | SE | 10 | |
| SE11 | SE | 11 | |
| SE2 | SE | 2 | |
| SW2 | SW | 2 | |
| SE3 | SE | 3 | |
|---------------------------------------------|
您的查询可能是:
Select
postCode
from
PostCodeTable
order by
codePart1,
codePart2
// etc etc as needed.
[自然排序在MySQL(的
可能重复http://stackoverflow.com/questions/153633/natural-sort-in-mysql ) – 2012-03-28 18:00:48
你忘了SW1W,EC1A等......这会造成更多问题...... GiroBank GIR 0AA,BFPO ...所以你甚至不能使用数字。这可能会比其他任何事情都更好。 – Ben 2012-03-28 20:08:19