【叶子函数分享三十八】得到条形码的校验位函数

本文介绍了一种计算校验码的方法及其SQL实现过程。校验码用于验证条形码等编码的有效性,通过特定算法计算得出。文中详细解释了计算步骤,并给出SQL函数实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、校验码说明:

校验码的计算方法

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+934

3. *3=

34×3102

4.从序号3开始求出奇数位上数字之和

8+6+4+2+0+626

5. +=

102+26128

6.用大于或等于结果且为10最小整数倍的数减去,其差即为所求校验码的值

1301282
校验码X12

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

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值