一、校验码说明:
校验码的计算方法 |
||||||||||||||||||||||||||||||||||||||||||
1. 代码位置序号 代码位置序号是指包括校验码在内的,由右至左的顺序号(校验码的代码位置序号为1)。 2. 计算步骤
表1 校验码的计算方法 |
二、SQL实现:
-- =============================================
-- Author: <Maco Wang>
-- Create date: <2009-10-27 16:01>
-- Description: <计算条形码的校验码>
-- =============================================
create function [dbo].[Get_CheckCode]
(
@ActiveCode varchar(12)
)
returns varchar(13)
as
begin
declare @codelength int
set @codelength= len(@ActiveCode)
declare @curnum int;set @curnum=0
declare @temp1 int;set @temp1=0
declare @temp2 int;set @temp2=0
declare @locatnum int;set @locatnum=0
declare @code13 int
declare @i int;set @i=0
while(@i<@codelength)
begin
set @[email protected]+2;
set @curnum=floor(substring(@ActiveCode,@[email protected],1))
if(@locatnum%2=0)
set @[email protected][email protected]
else
set @[email protected][email protected]
set @[email protected]+1
end
set @code13=10-(@temp1*[email protected])%10;
if(@code13=10)
set @code13=0
return @ActiveCode+cast(@code13 as varchar(1));
end
--测试示例
select dbo.[Get_CheckCode](‘827123121212‘)
--运行结果
/*
8271231212124
*/