How to compare software versions using SQL Server?

后端 未结 16 2228
清酒与你
清酒与你 2020-12-03 07:30

When trying to compare software versions 5.12 to 5.8, version 5.12 is newer, however mathematically 5.12 is less than 5.8. How would I compare the two versions so that a new

16条回答
  •  时光说笑
    2020-12-03 08:15

    The solution that was implemented:

    CREATE FUNCTION [dbo].[version_compare]
    (
        @v1 VARCHAR(5), @v2 VARCHAR(5)
    )
    RETURNS tinyint
    AS
    BEGIN
        DECLARE @v1_int tinyint, @v1_frc tinyint, 
                @v2_int tinyint, @v2_frc tinyint, 
                @ResultVar tinyint
    
        SET @ResultVar = 0
    
        SET @v1_int = CONVERT(tinyint, LEFT(@v1, CHARINDEX('.', @v1) - 1))
        SET @v1_frc = CONVERT(tinyint, RIGHT(@v1, LEN(@v1) - CHARINDEX('.', @v1)))
        SET @v2_int = CONVERT(tinyint, LEFT(@v2, CHARINDEX('.', @v2) - 1))
        SET @v2_frc = CONVERT(tinyint, RIGHT(@v2, LEN(@v2) - CHARINDEX('.', @v2)))
    
        SELECT @ResultVar = CASE
            WHEN @v2_int > @v1_int THEN 2
            WHEN @v1_int > @v2_int THEN 1
            WHEN @v2_frc > @v1_frc THEN 2
            WHEN @v1_frc > @v2_frc THEN 1
        ELSE 0 END
    
        -- Return the result of the function
        RETURN @ResultVar
    END
    GO
    

提交回复
热议问题