Trong SQL hỗ trợ lập trình với T-SQL, bạn có thể tạo các hàm xử lý chuổi hoặc những vấn đề (đa số liên quan đến chuổi).
Và đây là ví dụ về cách mã hoá một chuổi nào đó (ví dụ mã hoá password). Thực chất của hàm này là thay đổi chuổi nhập vào = chuổi khác theo một quy luật nào đó. Và quy luật ở đây là ký tự ở vị trí lẽ sẽ tăng lên 20*number, ký tự ở vị trí chẵn sẽ giảm đi 20*number.
1. Hàm mã hóa ký tựCREATE FUNCTION fuMaHoaString
(@strInput nvarchar(200),
@
dt smallint=-1)
RETURNS nvarchar(200)
AS
BEGIN
Declare @str nvarchar(200)
Declare @
lenStr tinyint
Declare @i tinyint
Declare @k smallint
Set
@lenStr = Len(@strInput)
Set @str = ''
Set @i = 1
If (@dt = 0)
Set @dt = -1
Set
@k = @dt / Abs(@dt)
While (@
i <= @lenStr)
Begin
Set
@str = @str + Char((Ascii(SubString(@strInput, @i, 1))+@k*20))
Set @k = -@k
Set
@i = @i + 1
End
Return @str
END
//trong hàm trên chỉ cần 1 câu lệnh là quyết định, mấy câu còn lại chỉ để
làm mù mắt ai đó mà thôi
Ví dụ: SELECT dbo.fuMaHoaString('abc123',1) Sẽ trả về 'uNw F '
2. Hàm giải mã hàm đã mã hóa ở trên.
Hàm dịch lại cách mã hoá đó thì cũng tương tự thôi (có thể viết tại SQL hoặc tại chương trình khác). Sau đây là hàm dịch lại chuổi:
CREATE FUNCTION fuGiaiMaKyTuDaMaHoa
(@strInput nvarchar(200),
@dt smallint=-1)
RETURNS nvarchar(200)
AS
BEGIN
Declare @str nvarchar(200)
Declare @lenStr tinyint
Declare @i tinyint
Declare @k smallint
Set @lenStr = Len(@strInput)
Set @str = ''
Set @i = 1
If (@dt = 0)
Set @dt = -1
Set @k = -@dt / Abs(@dt)
While (@i <= @lenStr)
Begin
Set @str = @str + Char((Ascii(SubString(@strInput, @i, 1))+@k*20))
Set @k = -@k
Set @i = @i + 1
End
Return @str
END
Ví dụ: SELECT dbo.fuGiaiMaKyTuDaMaHoa(dbo.fuMaHoaString('abc123',1),1) Sẽ trả về abc123