【发布时间】:2009-04-27 09:11:21
【问题描述】:
我需要按顺序对英国邮政编码列表进行排序。
有简单的方法吗?
英国邮政编码由字母和数字组成:
有关格式的完整信息,请参阅: http://en.wikipedia.org/wiki/UK_postcodes
但我的问题是这种简单的 alpha 排序不起作用,因为每个代码都以 1 或两个字母开头,然后紧跟一个数字,最多两位数字,然后是空格,另一个数字,然后是一个字母。例如LS1 1AA 或 ls28 1AA,还有另一种情况,一旦第一部分的数字超过 99 就继续 9A 等等。
Alpha 排序导致 10 紧跟在 1 之后:
...
LS1 9ZZ
LS10 1AA
...
LS2
我正在考虑创建一个 SQL 函数来将可打印的邮政编码转换为可排序的邮政编码,例如'LS1 9ZZ' 会变成 'LS01 9ZZ',然后在 order by 子句中使用这个函数。
有没有人做过这个或类似的事情?
【问题讨论】:
-
我认为(可能)用户从中选择的菜单或邮政编码列表是一个相当不愉快的 UI,除非列表可以保持非常短。如果你真的需要这样做,alpha 排序可能和任何东西一样好——我的工作邮政编码不符合你的模式——它是 ec1a 2ay。你想把它放在排序列表的哪个位置?
-
同意 - 我将更改 UI 方法。
标签: sql sorting postal-code