Bài viết mới

[SQLSERVER] Hướng dẫn mã hóa kiểu số sang chuỗi và giải mã ngược lại

[SQLSERVER] Hướng dẫn mã hóa kiểu số sang chuỗi và giải mã ngược lại
Đăng bởi: Thảo meo - Lượt xem: 96 15:10:58, 08/02/2018DATABASE   In bài viết

Hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách mã hóa từ số nguyên (int) sang kiểu chuỗi và ngược lại trong SQLSERVER.

Đầu tiên mình sẽ tạo một hàm Mã hóa Encrypt2String:

CREATE FUNCTION dbo.Encrypt2String (@Number2Encrypt INT)
RETURNS VARCHAR(30)
AS
BEGIN
 DECLARE @AlphabetCode VARCHAR(26)
 DECLARE @AlphabetLength INT = 26
 DECLARE @EncryptedString VARCHAR(30) = ''
 DECLARE @CurrDigitInNumber CHAR(1)

 SET @AlphabetCode = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 SET @EncryptedString = SUBSTRING(@AlphabetCode, (@Number2Encrypt % @AlphabetLength) + 1, 1)

 WHILE @Number2Encrypt > 0
 BEGIN
  SET @CurrDigitInNumber = SUBSTRING(@AlphabetCode, ((@Number2Encrypt / @AlphabetLength) % @AlphabetLength) + 1, 1)
  SET @Number2Encrypt = @Number2Encrypt / @AlphabetLength

  IF @Number2Encrypt != 0
   SET @EncryptedString = @CurrDigitInNumber + @EncryptedString
 END

 RETURN @EncryptedString
END
GO

Hàm giải mã Decrypt2Number

CREATE FUNCTION dbo.Decrypt2Number (@encryptString VARCHAR(7))
RETURNS INT
AS
BEGIN
 DECLARE @AlphabetCode VARCHAR(26)
 DECLARE @AlphabetLength INT = 26
 DECLARE @Idx INT = 0
 DECLARE @Letter CHAR(1)
 DECLARE @LetterValue INT
 DECLARE @ReversedEncryptString VARCHAR(7)
 DECLARE @DecryptedNumber INT = 0

 SET @ReversedEncryptString = REVERSE(@encryptString)
 SET @AlphabetCode = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 WHILE @Idx < LEN(@encryptString)
 BEGIN
  SET @Letter = SUBSTRING(@ReversedEncryptString, @Idx + 1, 1)
  SET @LetterValue = (CHARINDEX(@Letter, @AlphabetCode) - 1) * POWER(@AlphabetLength, @Idx)
  SET @DecryptedNumber = @DecryptedNumber + @LetterValue
  SET @Idx = @Idx + 1
 END

 RETURN @DecryptedNumber
END
GO

Dữ liệu test:

SELECT dbo.Encrypt2String(65536) 

Kết quả: DSYQ

SELECT dbo.Decrypt2Number('DSYQ')

Kết quả: 65536

 

HAVE FUN :)

[SQLSERVER] Hướng dẫn mã hóa kiểu số sang chuỗi và giải mã ngược lại
Đăng bởi: Thảo meo - Lượt xem: 96 15:10:58, 08/02/2018DATABASE   In bài viết

THẢO LUẬN BÀI VIẾT