Mysql SQL比较值为version的字符串

Mysql SQL比较值为version的字符串,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,可能重复: 我需要比较具有版本值的字符串,例如: string1=2.3.4 string2=2.5.6 现在在上述情况下,我需要检查哪个字符串版本更大?您可以尝试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)

可能重复:

我需要比较具有版本值的字符串,例如: string1=2.3.4 string2=2.5.6 现在在上述情况下,我需要检查哪个字符串版本更大?

您可以尝试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
案例
当str1=str2时,则为0
当str1str2时,则为1
ELSE NULL——其中一个字符串为NULL,因此不会进行比较(在编辑时添加)
结束
在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

我认为需要更多的信息来完成这个比较。每个级别的版本是否总是一个位数<代码>X.X.X?或者它将永远是
XX.X.X
?版本可能不止一个数字,例如它可能是22.143.1123,也可能是2.3.4。由于词法排序的性质,如果不总是以精确的单位数X.y.z格式,这很适合比较字符串,但不适合比较版本号。良好的逻辑。。。但我认为“10.9”和“1.80”的结果是错误的。请你方确认。