Advertisement
Guest User

Untitled

a guest
May 27th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.55 KB | None | 0 0
  1. ALTER FUNCTION [dbo].[fn_StringToVersion] (@version NVARCHAR(255))
  2.     RETURNS BIGINT
  3. AS
  4. BEGIN
  5.     DECLARE @temp NCHAR
  6.     DECLARE @minor BIGINT
  7.     DECLARE @major BIGINT
  8.     DECLARE @numberOfDot INT
  9.     DECLARE @position INT
  10.  
  11.     SET @minor = 0
  12.     SET @major = 0
  13.     SET @numberOfDot = 0
  14.     SET @position = 1
  15.     SET @temp = N'0'
  16.  
  17.     WHILE @position <= LEN(@version)  
  18.     BEGIN
  19.        SET @temp = SUBSTRING(@version, @position, 1)
  20.        
  21.        IF @temp >= N'0' AND @temp <= N'9'
  22.            -- Building sub version
  23.            SET @minor = @minor * 10 + ASCII(@temp) - ASCII(N'0')
  24.        ELSE IF @temp = N'.'  
  25.        BEGIN
  26.            -- Built a sub version, add it to major version
  27.            IF @numberOfDot = 0
  28.                SET @major = @major + @minor * POWER(2, 20) * POWER(2, 20)
  29.            ELSE IF @numberOfDot = 1
  30.                SET @major = @major + @minor * POWER(2, 16) * POWER(2, 16)
  31.            ELSE IF @numberOfDot = 2
  32.                SET @major = @major + @minor * POWER(2, 16)
  33.            ELSE
  34.                -- Extra '.' found, incorrect version format, stop parsing and return 0
  35.                RETURN 0
  36.            
  37.            SET @minor = 0
  38.            SET @numberOfDot = @numberOfDot + 1
  39.        END
  40.        ELSE
  41.            -- Incorrect version format, stop parsing and return 0
  42.            RETURN 0
  43.        
  44.        SET @position = @position + 1
  45.     END
  46.        
  47.     -- Add the last sub version to major  
  48.     SET @major = @major + @minor;
  49.        
  50.     RETURN @major
  51. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement