Willcode4cash icon

URL Shortening SQL Encode and Decode functions

Willcode4cash | PRO | 08/19/17 04:24:03 AM UTC | 0 ⭐ | 306 👁️ | Never ⏰ | []
T-SQL |

1.36 KB

|

None

|

0 👍

/

0 👎

CREATE FUNCTION dbo.Decode (@encodedId NVARCHAR(50))
  RETURNS INT
  AS
  BEGIN
 
    DECLARE @alphabet   nvarchar(36) = 'abcdefghijklmnopqrstuvwxyz0123456789',
            @base       INT,
            @decodedId  INT = 0,
            @len        INT,
            @pos        INT = 1,
            @letter     NVARCHAR(10)
 
    SET     @len = LEN(@encodedId)
    SET     @base = LEN(@alphabet)
 
    WHILE(@pos <= @len)
      BEGIN
        SET @letter = SUBSTRING(@encodedId, @pos, 1)
        SET @decodedId = (@decodedId * @base) + CHARINDEX(@letter, @alphabet)
        SET @pos += 1
      END
 
    RETURN @decodedId
 
  END
GO
 
CREATE FUNCTION dbo.Encode (@id INT)
  RETURNS NVARCHAR(50)
  AS
  BEGIN
 
    DECLARE @alphabet   nvarchar(36) = 'abcdefghijklmnopqrstuvwxyz0123456789',
            @base       int,
            @pos        int,
            @result     nvarchar(50) = '',
            @encodedId  nvarchar(50) = ''
 
    SET     @base = LEN(@alphabet)
 
    IF(@id = 0)
      BEGIN
        SET @result = SUBSTRING(@alphabet, 1, 1)
      END
    ELSE
      BEGIN
        WHILE(@id > 0)
          BEGIN
            SET @pos = @id % @base
            SET @encodedId += SUBSTRING(@alphabet, @pos, 1)
            SET @id = @id / @base
          END
        SET @result = REVERSE(@encodedId)
      END
 
    RETURN @result
 
  END
GO

Comments