2016-09-24 55 views
3

我有這些CB1-15值,但是我想... CB1-15命令他們,但目前它去CB1,CB10,CB11等訂購一個字符串從SQL

這是我的表看起來如何?

CB Description File Path 

CB1 New Product new.png 
CB10    
CB11    
CB12    
CB13    
CB14    
CB15    
CB2 Best Seller best.png 
CB3   
CB4   
CB5   
CB6   
CB7   
CB8   
CB9   

感謝您的幫助:)

+1

我好清楚。樣本數據是一列還是多列? –

+0

@JohnCappelletti @JohnCappelletti它已被回答 - 但是如果有人在iv'e後期搜索它以更新該帖子以顯示其列:) – Adam91Holt

回答

6

使用下面的腳本。

SELECT * 
    FROM YourTable 
    ORDER BY CAST(Replace(YourColumn,'CB','')as INT) 
+0

謝謝:)非常感謝! – Adam91Holt

+1

即使對於CB100,它也可以更好地工作+1 :) – Susang

2

,如果該數據是在多列或者一個字符串有點不清楚。這裏有一個方法,應該在這兩種情況下工作:

select * 
from yourtable 
order by cast((substring(yourfield, 3, 2)) as int) 

的關鍵是使用castorder byint而不是字符串。

+0

非常感謝您的先生:) – Adam91Holt

+0

這對CB100不起作用,因此您必須使用長度值而不是2替換CB,所以我會說@ Unnik的解決方案更好。 – Susang

0

另一種簡單的方法做做排序:

order by len(col), col 

,如果你想降:

order by len(col) desc, col desc