2012-11-07 16 views
1

可能重複:
Split a string and return greatest in mssqlSQL比較有版本字符串作爲值

我需要比較具有版本值的字符串,例如: 字符串1 = 2.3.4 字符串2 = 2.5.6 現在在上述情況下,我需要檢查哪個字符串版本更大?

+4

我認爲需要更多的信息來完成這一比較。這個版本在每個級別上總是隻有一個數字嗎? 'X.X.X'?或者它會成爲'XX.X.X'? – JoeFletch

+0

版本可能不止一個數字,例如它可能是22.143.1123或它也可能是2.3.4 – user1805087

回答

-1

你可以嘗試strcmp的

CASE 
WHEN str1 = str2 THEN 0 
WHEN str1 < str2 THEN -1 
WHEN str1 > str2 THEN 1 
    ELSE NULL --one of the strings is NULL so won't compare (added on edit) 
END 
+0

由於詞法排序的本質,如果不是始終以精確的一位數x.y.z格式,這很快就會崩潰。 – 2012-11-07 05:41:20

+0

這比較適合比較字符串,但不適用於版本號。 –

0

在SQL Server:

Declare @string1 varchar(10) 
Declare @string2 varchar(10) 

SET @string1='2.3.4' 
SET @string2='2.5.6' 

select CASE WHEN convert(int,replace(@string1,'.','')) > convert(int,replace(@string2,'.','')) then @string1 else @string2 end GreaterVersion 
+0

良好的邏輯......但我認爲結果出錯'10.9'和'1.80'。請從你身邊確認。 – TechDo