商品国标码的SQLSERVER SQL 校验位 实现:
前提 A2已经由 厂商代码+4位的号码存储好,就缺最后面的校验位计算了:
A2 + RIGHT(10 - ( ( CAST(SUBSTRING(A2, 2, 1) AS INT)
+ CAST(SUBSTRING(A2, 4, 1) AS INT)
+ CAST(SUBSTRING(A2, 6, 1) AS INT)
+ CAST(SUBSTRING(A2, 8, 1) AS INT)
+ CAST(SUBSTRING(A2, 10, 1) AS INT)
+ CAST(SUBSTRING(A2, 12, 1) AS INT) ) * 3
+ CAST(SUBSTRING(A2, 1, 1) AS INT)
+ CAST(SUBSTRING(A2, 3, 1) AS INT)
+ CAST(SUBSTRING(A2, 5, 1) AS INT)
+ CAST(SUBSTRING(A2, 7, 1) AS INT)
+ CAST(SUBSTRING(A2, 9, 1) AS INT)
+ CAST(SUBSTRING(A2, 11, 1) AS INT) ) % 10, 1)
算法:
条形码校验码的计算方法
1、代码位置序号
代码位置序号是指包括校验码在内的,由右至左的顺序号(校验码的代码位置序号为1)。
2、计算步骤
校验码的计算步骤如下:
a、从代码位置序号2开始,所有偶数位的数字代码求和。
b、将步骤a的和乘以3。
c、从代码位置序号3开始,所有奇数位的数字代码求和。
d、将步骤b与步骤c的结果相加。
e、用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。
步骤举例说明
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
④,其差即为所求校验码的值 校验码X=2