簡體   English   中英

帶街道地址的Mysql DB-我要按名稱排序然后按數字排序?

[英]Mysql DB w/Street Addresses - I want to Sort by Name then Number?

我適合為此編寫php或mysql。 我有一個字段的街道地址類似“ 12-A Test Drive”……我想按地址名稱然后按街道編號對整個結果進行排序。 我已經弄清楚了如何按地址名稱進行排序,但是不能完全正確地輸入街道編號。

到目前為止,這是我的mysql命令:

SELECT address from property_details ORDER BY SUBSTR(LTRIM(address), LOCATE(' ',LTRIM(address)))

308 Berry Street, 
317 Berry Street, 
803 E. California, 
2046 Lost Thistle Way, 
2000 Lost Thistle Way, 
2019 Lost Thistle Way, 
14 Perry Dr, 
5 Perry Dr, 
10224 Stone Plaza, 
211 Sumney Ave, 
209 Sumney Ave, 
35-B Wicket, 
35-A Wicket, 
317-B Wicket, 
53 Wicket

當我想要這樣顯示時:

308 Berry Street, 
317 Berry Street, 
803 E. California, 
2000 Lost Thistle Way, 
2019 Lost Thistle Way, 
2046 Lost Thistle Way, 
5 Perry Dr, 
14 Perry Dr, 
10224 Stone Plaza, 
209 Sumney Ave, 
211 Sumney Ave, 
35-A Wicket, 
35-B Wicket, 
53 Wicket, 
317 Wicket

任何幫助,不勝感激!

只需繼續使用您已經在使用的SUBSTRLOCATE函數即可。 您可以按多種方式進行ORDER ,但如果需要數字順序,則需要將字符串更改為數字。 這需要提取連字符(如果存在)。 如果您使用“ 123A Any Street”之類的地址,則此方法將無效。

SELECT
  address,
  CONVERT (
    IF (LOCATE('-', address),
      SUBSTR(TRIM(address), 1, LOCATE('-',TRIM(address)) - 1),
      SUBSTR(TRIM(address), 1, LOCATE(' ',TRIM(address)) - 1)
    ), UNSIGNED
  ) AS number,
  SUBSTR(TRIM(address), LOCATE(' ',TRIM(address))) AS street
FROM property_details
ORDER BY street, number;

http://sqlfiddle.com/#!9/a1775/4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM