Tải bản đầy đủ (.doc) (3 trang)

Tạo hàm mã hóa T-SQL pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (70.76 KB, 3 trang )

Tạo một hàm mã hoá với T-SQL
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 đề 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 bằng chuỗi khác theo
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 đề 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 bằng 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ự
view plain print ?
1.
2. CREATE FUNCTION fuMaHoaString
3. (@strInput nvarchar(200),
4. @dt smallint=-1)
5. RETURNS nvarchar(200)
6. AS
7. BEGIN
8. Declare @str nvarchar(200)
9. Declare @lenStr tinyint
10. Declare @i tinyint
11. Declare @k smallint
12. Set @lenStr = Len(@strInput)
13. Set @str = ''
14. Set @i = 1
15. If (@dt = 0)
16. Set @dt = -1
17. Set @k = @dt / Abs(@dt)


18. While (@i <= @lenStr)
19. Begin
20. Set @str = @str + Char((Ascii(SubString(@strInput, @i, 1))+@k*20))
21. Set @k = -@k
22. Set @i = @i + 1
23. End
24. Return @str
25. END
26. //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ề 'uNwF'
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:
view plain print ?
1. CREATE FUNCTION fuGiaiMaKyTuDaMaHoa
2. (@strInput nvarchar(200),
3. @dt smallint=-1)
4. RETURNS nvarchar(200)
5. AS
6. BEGIN
7. Declare @str nvarchar(200)
8. Declare @lenStr tinyint
9. Declare @i tinyint
10. Declare @k smallint
11. Set @lenStr = Len(@strInput)
12. Set @str = ''
13. Set @i = 1
14. If (@dt = 0)
15. Set @dt = -1

16. Set @k = -@dt / Abs(@dt)
17. While (@i <= @lenStr)
18. Begin
19. Set @str = @str + Char((Ascii(SubString(@strInput, @i, 1))+@k*20))
20. Set @k = -@k
21. Set @i = @i + 1
22. End
23. Return @str
24. END
Ví dụ: SELECT dbo.fuGiaiMaKyTuDaMaHoa(dbo.fuMaHoaString('abc123',1),1) Sẽ trả
về abc123

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×