gpt4 book ai didi

sql-server - 在 SQL Server 中计算 GS1 校验位

转载 作者:行者123 更新时间:2023-12-04 10:54:04 26 4
gpt4 key购买 nike

如何计算GS1 check digit用于 SQL Server 中的 GTIN 和 SSCC 代码。

最佳答案

此用户定义函数将为 GS1 网站上提到的所有 GTIN 和 SSCC 格式计算校验位。该函数将返回包含校验位作为最后一个字符的代码。

CREATE FUNCTION [GtinCheckDigit] (@Input VARCHAR(17))
RETURNS TABLE WITH SCHEMABINDING AS
RETURN WITH [ReverseInput](S) AS (
SELECT REVERSE(@Input)
), [CharCount](N) AS (
SELECT n from (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17)) a(n)
), [CharPos](N,S) AS (
SELECT TOP (LEN(@Input)) [CharCount].N,SUBSTRING([ReverseInput].S,[CharCount].N,1)
FROM [CharCount],[ReverseInput]
), [Multiplier](N) AS (
SELECT (S*CASE WHEN (N%2) = 0 THEN 1 ELSE 3 END)
FROM [CharPos]
), [Checksum](N) AS (
SELECT CASE WHEN (SUM(N)%10) > 0 THEN (10-(SUM(N)%10)) ELSE 0 END
FROM [Multiplier]
)
SELECT @Input + CAST(N as VARCHAR) as [Output] from [Checksum];

如果您只需要检索计算出的校验位,您可以将函数的最后一行更改为如下内容:

SELECT N from [Checksum];

此函数仅适用于 SQL-Server 2008 或更高版本,因为 REVERSE 函数用于反转输入。

关于sql-server - 在 SQL Server 中计算 GS1 校验位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com