------------------------------------------
-- 전자(전각) --> 반자(반각)로 변환.
------------------------------------------
CREATE function [dbo].[tohalfchar] (@a nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @i int
declare @str nvarchar
declare @result nvarchar(4000)
set @result=''
set @str=''
set @i=1
while @i<=len(@a)
begin
if Unicode(substring(@a,@i,1))=12288
begin
-- 공백일때는 1바이트 공백으로 처리.
set @str = ' '
end
else if ((Unicode(substring(@a,@i,1))>= 44032) and ( Unicode(substring(@a,@i,1))<= 55203))
begin
-- 한글일때는 그대로 통과.
set @str = nchar(Unicode(substring(@a,@i,1)))
end
else if ((Unicode(substring(@a,@i,1))>= 65280) and ( Unicode(substring(@a,@i,1))<= 65519))
begin
-- 전각문자일때는 반각문자로 변환.
set @str = nchar(Unicode(substring(@a,@i,1))-65248)
end
else
begin
-- 그 외 일대는 그대로 통과.
set @str = nchar(Unicode(substring(@a,@i,1)))
end
set @i=@i+1
set @result = @result+@str
end
return @result
end
------------------------------
-- 반자 (반각) --> 전자(전각)
------------------------------
ALTER function [dbo].[tofullchar] (@a nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @i int
declare @str nvarchar
declare @result nvarchar(4000)
set @result=''
set @str=''
set @i=1
while @i<=len(@a)
begin
if Unicode(substring(@a,@i,1))=32
begin
-- 공백일때는 전각문자의 공백으로 변환...
set @str = ' '
end
else if Unicode(substring(@a,@i,1))>= 44032
begin
-- 한글일때는 그대로 유지
set @str = nchar(Unicode(substring(@a,@i,1)))
end
else
begin
-- 그외에는 모두 전각으로 변환.
set @str = nchar(Unicode(substring(@a,@i,1))+65248)
end
set @i=@i+1
set @result = @result+@str
end
return @result
end
