MySQL排序英国邮政编码

时间:2012-03-28 17:59:18

标签: php mysql

我目前在名为order by的列上使用postcodes进行简单的MySQL选择。这些邮政编码是英国。

目前按此顺序输出:SE1, SW1, SE10, SE11, SE2, SW2, SE3。我知道使用ABS()会纠正数字排序,但我不确定在这种情况下我会怎么做,因为有字母和数字。

我想按以下顺序显示它们:
SE1, SE2, SE3 SE10, SE11, SW1, SW2

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以向表中添加一些额外的列以包含其中的片段,并使用第三列进行排序来返回顺序。例如:

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.