2012-10-17 141 views
0

我在數據庫表中有相當龐大的數據,我想根據它們的ID(主鍵)對數據進行排序。在鍵列中的數據可能是:排序表數據問題

001/2011, 
002/2011, 
001/2012 

當我使用「order by id」它排序像

001/2011, 
001/2012, 
002/2011 

然而行,我所尋找的是

001/2011, 
002/2011, 
001/2012 

的id列的數據類型爲varchar(50)。有沒有一種特殊的SQL函數可以用來排序這種類型的數據?

回答

3
ORDER BY RIGHT(ID,4)+LEFT(ID,3) 

這重新排列varchar數據,以便年份排在第一位,序列/月/日年份在後。

如果你有一些其他格式的數據,然後想一想。使用SUBSTRING左右移動字符串,其中LEFT和RIGHT只是2個特定版本。

+1

雖然格外挑剔,但我個人會用''替換'+','。和/或檢查'/'的位置使其移動。 ;)* [+ 1,因爲它仍然有效。] * – MatBailie

+1

'和/或檢查/移動它的位置移動.'我不會沿着螺旋。數據如問題所示一致,或者我們可以整天凝視水晶球。 – RichardTheKiwi

+0

它在查詢上工作,但在我把它放在視圖中時不起作用 – aby