我正尝试按街道名称和街道号码对地址列表进行排序。这两种形式的数据都位于同一列中,即我的架构"data"中的"address"。
数据的格式类似于:
- 27号朗郡
- 杜威巷109号
- 齐克大道26号
- 1号朗郡
- 信天翁路26号
我试过了
SELECT * FROM data ORDER BY address;
这就给了我:
- 1号朗郡
- 信天翁路26号
- 齐克大道26号
- 27号朗郡
- 杜威巷109号
我也试过:
SELECT * FROM parcel_data.parcels ORDER BY CONVERT(SUBSTRING_INDEX(address, ' ', 1), UNSIGNED INTEGER);
这给了我一个不考虑字母顺序的列表,而是按照数字排列的,看起来类似于:
- 1号朗郡
- 泽克林26号
- 信天翁路26号
- 27号朗郡
- 杜威巷109号
理想情况下,我要寻找的输出是:
- 信天翁路26号
- 杜威巷109号
- 1号朗郡
- 27号朗郡
- 齐克大道26号
先把街道名称按字母顺序排列,然后再按数字顺序排列。
我该怎么做呢?
蒂亚!
2条答案
按热度按时间s3fp2yjn1#
在MySQL中,您只需执行以下操作:
(the最后一个仅用于非数字门牌号)
brjng4g32#
你可以尝试使用mysql中的定位和反向函数。我只是提取了中间名和排序。
https://dbfiddle.uk/157f2xxv
从数据排序依据中选择 *(选择子字符串(地址,定位(““,地址),长度(地址)-(定位(““,反向(地址))+定位(““,地址))))