2016-10-06 142 views
0

我是新來的SQL和運行陷入了困境。SQL - 排序功能爲A1,A2,A3,A4 ...... A101

如果我有一列A1,A2,A3 ...... A1000

當我爲了這個列,看來A1,A100,A2 ......我得到的邏輯原因。

嘗試:order by left(length(company.company_code),-1) ASC;

我嘗試上述嘗試切去A,但沒有運氣?

有什麼建議嗎?

+1

你使用哪個dbms?也許你可以使用數字敏感排序規則。 – jarlh

+0

什麼數據庫系統(請[編輯]並添加一個合適的標籤) –

+0

任何負數?總是一個A,沒有更多? – jarlh

回答

5

下面是一個簡單的方法:第一

order by length(company.company_code), company.company_code 

此訂單由字符串的長度,然後將字符串的其餘部分。

你也可以做這樣的事情:

order by cast(substr(company.company_code, 2, 10) as int) 

這是假設恰好有一個字母后不超過9位數字。

+0

啊太棒了!所以它按照長度排序,即A1 = 2,而A100 = 3,然後是公司代碼。簡單但天才! – Phil

相關問題