SunnyDB

MS-SQL 체크디지트 생성 함수-retrun 1 본문

MS-SQL Tip

MS-SQL 체크디지트 생성 함수-retrun 1

Ksunny 2018. 8. 17. 18:02

ALTER  FUNCTION [dbo].[to_checkdigit] (@v_pos_code varchar(20)) 

RETURNS varchar(20)

as 

begin

   declare @v_checkdigit varchar(20),

                @v_idx integer,

                @v_sum integer,

                @v_mok integer,

                @nLoop integer


   select @v_idx = 0, @v_sum = 0, @v_mok = 0, @nLoop = 0

   

   if  charindex('.', @v_pos_code) > 0  RETURN @v_checkdigit


   if  IsNumeric(@v_pos_code) = 0  RETURN @v_checkdigit


   if ( Len(@v_pos_code) % 2 = 1 ) set @v_pos_code = '0' + @v_pos_code;



    While @nLoop < Len(@v_pos_code)

    begin

         select @nLoop = @nLoop + 1

            if (@nLoop % 2) = 0 

               select @v_sum = @v_sum + (cast( substring(@v_pos_code,@nLoop,1) as integer ) * 3)

            else 

               select @v_sum = @v_sum + (cast( substring(@v_pos_code,@nLoop,1) as integer ) * 1)

          

    end 


    select @v_mok = @v_sum % 10


    if @v_mok = 0 

       select @v_checkdigit = cast(@v_mok as varchar)

    else

       select @v_checkdigit = cast((10 - @v_mok) as varchar)


     RETURN @v_checkdigit

END

'MS-SQL Tip' 카테고리의 다른 글

MS-SQL 숫자 앞 '0' 채우기  (0) 2018.08.17
MS-SQL 체크디지트 생성함수-return all  (0) 2018.08.17
MS-SQL Table Description 확인  (0) 2018.08.17
MS-SQL 인덱스 재생성 프로시져  (0) 2018.08.17
MS-SQL 초성검색 함수  (0) 2018.08.17
Comments