操作方法
/*加密函數 ALTER function [dbo].[encode](@password varchar(16),@sqltxt varchar(4000)) returns varchar(4000) as begin declare @i integer=0,@j integer=0,@returns varchar(4000),@char char,@lensql integer,@lenpwd integer select @lenpwd=LEN(@password),@lensql=LEN(@sqltxt),@returns='',@char='',@i=1,@j=1 while @j<=@lensql begin select @i=1,@char=char(CASE @i%2 WHEN 1 THEN ascii(SUBSTRING(@sqltxt,@j,1))^ascii(SUBSTRING(@password,@i,1))+1 ELSE ascii(SUBSTRING(@sqltxt,@j,1))^ascii(SUBSTRING(@password,@i,1))-1 end) select @i=@i+1 while @i<=@lenpwd begin set @char=char(CASE @i%2 WHEN 1 THEN ascii(@char)^ascii(SUBSTRING(@password,@i,1))+1 ELSE ascii(@char)^ascii(SUBSTRING(@password,@i,1))-1 end) select @i=@i+1 end select @j=@j+1,@returns=@returns+@char end return @returns end --*/ /*解密函數 ALTER function [dbo].[decode](@password varchar(16),@sqltxt varchar(4000)) returns varchar(4000) as begin declare @i integer=0,@j integer=0,@returns varchar(4000),@char char,@lensql integer,@lenpwd integer select @lenpwd=LEN(@password),@lensql=LEN(@sqltxt),@returns='',@char='',@j=1 while @j<=@lensql BEGIN select @i=@lenpwd,@char=char(CASE @i%2 WHEN 1 THEN (ascii(SUBSTRING(@sqltxt,@j,1))-1)^ascii(SUBSTRING(@password,@i,1)) ELSE (ascii(SUBSTRING(@sqltxt,@j,1))+1)^ascii(SUBSTRING(@password,@i,1)) end) select @i=@i-1 while @i>0 begin select @char=char(CASE @i%2 WHEN 1 THEN (ascii(@char)-1)^ascii(SUBSTRING(@password,@i,1)) ELSE (ascii(@char)+1)^ascii(SUBSTRING(@password,@i,1)) end) select @i=@i-1 end select @j=@j+1,@returns=@returns+@char end return @returns end --*/ --測試 declare @sql varchar(4000) select @sql=dbo.encode('a','select top 3 * from employees') print @sql print dbo.decode('a',@sql)