SQL proc计算7位和12位upc的校验位 [英] SQL proc to calculate check digit for 7 and 12 digit upc
本文介绍了SQL proc计算7位和12位upc的校验位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只需要再次在互联网上搜索此代码,所以我想我会把它放在这里,以便下次可以更快找到它,希望您也发现它更快:)
I just had to scour the internet for this code yet again so I figured I would put it here so I can find it a little faster the next time and hopefully you found it a little faster too :)
推荐答案
选中此项。
下面的代码可以检查所有GTIN(EAN8,EAN13,EAN14,UPC / A,UPC / E)中的数字
Check this. The code below can check digit in all GTIN's (EAN8, EAN13, EAN14, UPC/A, UPC/E)
CREATE FUNCTION [dbo].[check_digit]
(
@GTIN VARCHAR(14)
)
RETURNS TINYINT
AS
BEGIN
DECLARE @Index TINYINT,
@Multiplier TINYINT,
@Sum TINYINT,
@checksum TINYINT,
@result TINYINT,
@GTIN_strip VARCHAR(13)
SELECT @GTIN_strip = SUBSTRING(@GTIN,1,LEN(@GTIN)-1);
SELECT @Index = LEN(@GTIN_strip),
@Multiplier = 3,
@Sum = 0
WHILE @Index > 0
SELECT @Sum = @Sum + @Multiplier * CAST(SUBSTRING(@GTIN_strip, @Index, 1) AS TINYINT),
@Multiplier = 4 - @Multiplier,
@Index = @Index - 1
SELECT @checksum = CASE @Sum % 10
WHEN 0 THEN '0'
ELSE CAST(10 - @Sum % 10 AS CHAR(1))
END
IF (SUBSTRING(@GTIN,LEN(@GTIN),1) = @checksum)
RETURN 1; /*true*/
RETURN 0; /*false*/
END
这篇关于SQL proc计算7位和12位upc的校验位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文