sqlserver urlencode
if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[urlencode]') and xtype in (n'fn', n'if', n'tf'))
-- 删除函数
drop function [dbo].[urlencode]
go
create function dbo.urlencode(@url varchar(3072))
returns varchar(3072)
as
begin
declare @count int,
@char varchar(2),
@i int,
@bytes binary(2),
@low8 int,
@high8 int
declare @urlencode varchar(3000) ;
set @count = len(@url)
set @i = 1
set @urlencode = ''
while (@i <= @count)
begin
set @char = substring(@url,@i,1)
if @char like '[-a-za-z0-9()''*._!]' and datalength(@char) = 1
set @urlencode = @urlencode + @char
else
begin
if datalength(@char) = 1
begin
set @urlencode = @urlencode + '%' + substring('0123456789abcdef',(ascii(@char) / 16 + 1),1)
set @urlencode = @urlencode + substring('0123456789abcdef',(ascii(@char) % 16 + 1),1)
end
else
begin
set @bytes = convert(binary,@char)
set @high8 = (0xff00 & cast(@bytes as int))/256
set @low8 = 0x00ff & cast(@bytes as int)
set @urlencode = @urlencode + '%' + substring('0123456789abcdef',(@high8 / 16 + 1),1)
set @urlencode = @urlencode + substring('0123456789abcdef',(@high8 % 16 + 1),1)
set @urlencode = @urlencode + '%' + substring('0123456789abcdef',(@low8 / 16 + 1),1)
set @urlencode = @urlencode + substring('0123456789abcdef',(@low8 % 16 + 1),1)
end
end
set @i = @i + 1
end
return @urlencode;
end