一、校验码说明:

校验码的计算方法

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

*/

得到条形码的校验位函数相关推荐

  1. Microsoft SQL Server 自定义函数整理大全--转【叶子】的文章

    SQL SERVER中是允许有自定义函数,Microsoft SQL Server并不将用户限制在定义为 Transact-SQL语言一部分的内置函数上,而是允许用户创建自己的用户定义函数. 函数是由 ...

  2. [转]Microsoft SQL Server 自定义函数整理大全

    SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数. 函数 ...

  3. (4.32)自定义函数整理大全

    转自:https://blog.csdn.net/maco_wang/article/details/6261639 SQL SERVER中是允许有自定义函数,Microsoft SQL Server ...

  4. python项目二:多种验证码及二维码输出

    python项目二:多种验证码及二维码输出 ` import os import qrcode import random import time import tkinter from pystri ...

  5. 一种物联网型的电能监控排插

    基于RISC-V MCU为核心的电能监控排插,及有人云物联网平台监控数据 一.预想功能 二.系统框架 三.硬件介绍 四.软件介绍 1.主函数 2.电能计量模块相关驱动函数 3.以太网模块相关驱动函数 ...

  6. NMEA1803协议3.0版本及以上说明

    NMEA1803 协议3.0版本及以上说明 一. NMEA1803协议格式: 二.标准信息发送器标识说明: 1.GNSS7种卫星系统说明 2.NMEA1803协议3.01与4.1版本标识符区别 三.常 ...

  7. JS使用Lodop控件打印表单和二维码

    有关Lodop的查询可看文章:Lodop打印条码二维码设置多宽不一定是多宽 一.了解Lodop 1.1Lodop的定义 Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内 ...

  8. 使用Lodop控件打印表单和二维码

    文章目录 1.了解Lodop 1.1Lodop的定义 1.2Lodop主要函数 1.3Lodop的下载 2.在页面中引入Lodop 3.支持的浏览器 4.Lodop的应用 4.1使用Lodop打印表单 ...

  9. linux开发板开机自启动脚本,linux 添加开机自启动脚本

    Linux设置服务开机自动启动的方式有好多种,这里介绍一下通过chkconfig命令添加脚本为开机自动启动的方法. 1. 编写脚本autostart.sh(这里以开机启动redis服务为例),脚本内容 ...

  10. 循环冗余校验(CRC)

    一.循环冗余校验(CRC)计算原理 1.定义:循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主 ...

最新文章

  1. 数据库中间件漫谈——看看云时代,它会走向何方
  2. datetime方法
  3. Ubuntu16.04 sudo apt-get install lib***-dev安装失败,无法锁定文件,sudo apt-get update 更新失败也无法解决
  4. 利用支持MicroPython的TPYBoard开发板自制PM2.5检测仪(萝卜教育学科式编程)
  5. hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
  6. P6 EPPM 16.1 安装和配置指南 1
  7. OLAP引擎——Kylin介绍
  8. SharePoint 2019 预览版下载地址(中文)
  9. word排版的时候如何将论文表格逆时针旋转90度竖放
  10. 基于matlab进行图像处理学习——从入门到入魔
  11. 大学物理实验长度的测量实验报告_大学物理长度测量实验报告
  12. PS 仿制图章 轻松换支付宝赞赏码 GIF动态图手把手教你
  13. Android 中光线传感器的使用详解
  14. Excel 2010 SQL应用096 聚合函数之标准偏差及标准差
  15. Midjourney:一步一步教你如何使用 AI 绘画 MJ
  16. 【已解决】PEP 8: W292 no newline at end of file等相关PEP 8错误与警告
  17. NLP训练营学习记录(一)
  18. 第二届“大数据在清华”高峰论坛,敬请期待!
  19. fiori 换行_《[家教初代]Cielo》七子姬 ^第31章^ 最新更新:2010-10-22 23:30:40 晋江文学城_手机版...
  20. 【图解】PCB快速制板,热转印机+腐蚀槽

热门文章

  1. time模块时间格式转换及faker库数据伪造
  2. K近邻算法与K均值算法的区别
  3. 【Java】 牛客网华为机试108题汇总
  4. Tomcat 中文乱码
  5. 在线计算机响声,怎么在线录制电脑内部声音
  6. 【三维点云数据处理】PCL三维点云配准 SACIA
  7. 0 AD13安装破解与汉化
  8. Mac蓝牙无法使用怎么办?教你7个修复蓝牙的技巧
  9. android远程桌面闪退,win7系统连接远程桌面出现闪退问题的两种解决方法详细教程...
  10. win10桌面显示计算机及网上邻居,Win10网上邻居在哪里Win10桌面显示网络图标的方法...