MS-SQL 체크디지트 생성함수-return all
ALTER FUNCTION [dbo].[to_checkdigita] (@v_pos_code varchar(20))
RETURNS varchar(20)
as
begin
declare @v_checkdigit varchar(20),
@v_pos_code2 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
select @v_checkdigit = '', @v_pos_code = RTrim(Ltrim(@v_pos_code))
if charindex('.', @v_pos_code) > 0 RETURN @v_pos_code + @v_checkdigit
if IsNumeric(@v_pos_code) = 0 RETURN @v_pos_code + @v_checkdigit
if ( Len(@v_pos_code) % 2 = 1 ) set @v_pos_code2 = '0' + @v_pos_code;
While @nLoop < Len(@v_pos_code2)
begin
select @nLoop = @nLoop + 1
if (@nLoop % 2) = 0
select @v_sum = @v_sum + (cast( substring(@v_pos_code2,@nLoop,1) as integer ) * 3)
else
select @v_sum = @v_sum + (cast( substring(@v_pos_code2,@nLoop,1) as integer ) * 1)
end
select @v_mok = @v_sum % 10
if @v_mok = 0
select @v_checkdigit = cast(@v_mok as varchar(1))
else
select @v_checkdigit = cast((10 - @v_mok) as varchar(1))
RETURN @v_pos_code + @v_checkdigit
END