2013-03-22 119 views
0

運行我的SQL查詢後,結果是排序按字母和字符在SQL Server

1.12.1 
1.12.2 
1.12.3 
1.12.4 
1.12.5 
1.12.6 
1.12.7 
1.12.8 
1.12.9 
1.12.10 
1.12.11 
1.12.2a 

但我想這個結果( 「2A」 後, 「2」)

1.12.1 
1.12.2 
1.12.2a <-- This one must be here, not at the end of the result set 
1.12.3 
1.12.4 
1.12.5 
1.12.6 
1.12.7 
1.12.8 
1.12.9 
1.12.10 
1.12.11 

什麼類型的SQL查詢可以做到這一點?

這是我的查詢......我使用SQL Server 2012

sResultSqlBuilder.Append( 「ORDER BY {0} {1} 」)

如果的SortExpression =「」 那

sResultSql = String.Format(sResultSql,「Right('0000000000'+ FirstNumber, 10),Right('0000000000'+ SecondNumber,10),Right('0000000000'+ ThirdNumbersAndLetter,10) 」,「」)

+1

什麼是您的源數據?你目前的查詢是什麼? – 2013-03-22 09:45:17

+0

MySql使用普通的'ORDER BY'對你想要的東西進行排序。你使用哪個DMBS? – JaMaBing 2013-03-22 09:47:52

回答

0

請嘗試,這在MS-SQL服務器的工作原理:

SELECT VersionNo, 
Cast(PARSENAME(VersionNo, 3)as int) as Num1, 
cast(PARSENAME(VersionNo, 2) as int) as Num2, 
cast(PARSENAME(VersionNo, 1) as nvarchar(2)) as Num3 
FROM 
(
    select '1.12.2' as VersionNo union 
    select '1.12.3' as VersionNo union 
    select '1.12.2a' as VersionNo union 
    select '1.12.1' as VersionNo union 
    select '1.12.4' as VersionNo 
)x 
Order by Num1, Num2, num3