2011-03-23 46 views
0

我需要在一個有點古怪的方式在網站上的項目進行排序:在SQL查詢中排序,忽略字段開頭的數字?

只是說我的數據是:

681A 
500AB 
300BB 

我需要它是在這個秩序,所以我需要它無視在開始時的數字以及它遇到的第一個字母的順序。

有沒有辦法在SQL查詢中做到這一點?或者我將不得不在頁面上創建一個數組,並用PHP這種方式進行排序?

如果有人能提供幫助,請提前致謝。

回答

1

您可以嘗試這樣做的一種方法是在查詢中添加一個子字符串並使用它進行排序。

請注意,此方法僅當您總是有3個字符忽略。

SELECT fieldA, fieldB, SUBSTRING(fieldB,4) as subfieldB FROM myTable order by subsfieldB

0

您的表中創建額外的列存儲的形式,這些縮寫你想進行排序。

0

看看如何使SQL正則表達式替換或嘗試使用替換功能有些東西是這樣的:

SELECT * FROM (
    SELECT REPLACE([YourCol],'0','') AS COL, * 
    FROM [table] 
) as T 
ORDER BY [COL] 
  • 注意,正則表達式不會有很大的性能
+0

謝謝,這看起來可能是最好的選擇,因爲它可能是任何數量的長度,所以我只需要取號關閉前,現在來提高我的正則表達式技巧 – rosc0 2011-03-23 10:53:54

0
select * from table order by substring(NNNN,startposition,endposition) asc 
+0

當你提供一個答案時,請也提供一個解釋。只是代碼不能幫助人們理解。順便說一句,我不認爲這甚至可以回答這個問題 – Mikkel 2016-12-16 09:35:58