一、校验码说明:
校验码的计算方法
|
1. 代码位置序号 代码位置序号是指包括校验码在内的,由右至左的顺序号(校验码的代码位置序号为1)。
2. 计算步骤 校验码的计算步骤如下: a.从代码位置序号2开始,所有偶数位的数字代码求和。 b.将步骤a的和乘以3。 c.从代码位置序号3开始,所有奇数位的数字代码求和。 d.将步骤b与步骤c的结果相加。 e.用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。 示例:代码690123456789X1校验码的计算见表B.1。
步 骤
|
举 例 说 明
|
1.自右向左顺序编号
|
位置序号
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
代码
|
6
|
9
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
X
|
|
2.从序号2开始求出偶数位上数字之和①
|
9+7+5+3+1+9=34 ①
|
3. ①*3=②
|
34×3=102 ②
|
4.从序号3开始求出奇数位上数字之和③
|
8+6+4+2+0+6=26 ③
|
5. ②+③=④
|
102+26=128 ④
|
6.用大于或等于结果④且为10最小整数倍的数减去④,其差即为所求校验码的值
|
130-128=2 校验码X1=2
|
表1 校验码的计算方法
|
二、SQL实现:
go
-- =============================================
-- 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 @locatnum=@i+2;
set @curnum=floor(substring(@ActiveCode,@codelength-@i,1))
if(@locatnum%2=0)
set @temp1=@temp1+@curnum
else
set @temp2=@temp2+@curnum
set @i=@i+1
end
set @code13=10-(@temp1*3+@temp2)%10;
if(@code13=10)
set @code13=0
return @ActiveCode+cast(@code13 as varchar(1));
end
--测试示例
select dbo.[Get_CheckCode]('827123121212')
--运行结果
/*
8271231212124
*/
分享到:
相关推荐
excel实现EAN-13条码的校验位(最后一位)的算法
13位条码校验
Oracle身份证号码校验函数,可以将15位身份号码升为18位,检验出生年月等信息
校验身份证
本函数提供18位身份证校验位的计算方法,输入前17位即可得到第18位的校验码!
c# modbus asc码和rtu方式的校验函数。已在程序开发中使用。
第二篇 服务器数据库篇 第二章 Apache函数 第三章 ODBC函数 第四章 MySQL函数 第三篇 数组字符篇 第五章 Arrays函数 ...第三十三章 Classes/Objects函数 第三十四章 COM函数 第三十五章 杂项函数
基于位运算实现CRC校验算法的函数,和枚举那种算法的不一样哦.
提供组件机构代码校验函数,可以由外部函数直接调用,返回true或false
身份证校验、升位、解析函数
第二篇 服务器数据库篇 第二章 Apache函数 第三章 ODBC函数 第四章 MySQL函数 第三篇 数组字符篇 第五章 Arrays函数 ...第三十三章 Classes/Objects函数 第三十四章 COM函数 第三十五章 杂项函数
PHP生成条形码 PHP统计字符串里单词出现次数 PHP缩略图类,可生成BMP格式 PHP自定义大小验证码函数 PHP获取.NET发出的WEBSERVICE数据 PHP获取FLV文件播放时间函数 PHP获取一年内所有周的开始和结束日期 php...
通过excel公共函数计算二代公民身份证号码末位校验码知识.pdf
CRC16校验码自动生成子函数源码亲测可用(自动添加到最后两位)
CRC校验函数,输入CRC序列,输出校验结果,若非0,说明校验错误
18位身份证和组织机构代码校验ORACLE函数
STM 32 标准CRC,可以直接用的驱动文件,所有CRC的计算都是按照数据的高位在先的原则进行,上述这份资料(11节)中说因为UART是先发送字节的最低位, 因此设计UART的工程师按照传输线上数据位的顺序,设计了CRC的计算...
适用于标准MODBUS通信协议校验,经验证crc16校验吗无误
校验统一社会信用代码的合法性,是SQL2008的标量函数