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
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