'SQL'에 해당되는 글 36건

  1. 2009.01.14 MS-SQL서버 전자(전각)<-->반자(반각)변환함수샘플

------------------------------------------

-- 전자(전각) --> 반자(반각)로 변환.

------------------------------------------

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



Posted by 펀펀