【发布时间】:2012-03-09 11:41:52
【问题描述】:
在我的电子商务门户中,我收到了来自分销商的产品 EAN 代码。我想完成计算checksum digit 的 EAN-12 代码,然后返回 EAN-13。
原始代码从 SQL Server 表中读取,并通过存储过程复制到另一个 SQL Server 数据库中。
我想在现有存储过程中计算校验和数字,而不添加其他编程层。计算校验和的算法基于数字掩码(它将 EAN 数字乘以位置权重值,将结果相加并计算下一个更大的 10 倍数的差)。
很简单,UDF 可以实现该算法,但它需要使用临时表来处理对数字的操作,SQL Server 不允许在 UDF 中使用临时表! 你知道有什么解决办法吗?
算法细节和示例:
EAN-12: 7 2 5 1 8 4 6 6 0 4 0 5
weights: 1 3 1 3 1 3 1 3 1 3 1 3
multip: 7 6 5 3 8 12 6 18 0 12 0 15
sum: 92
checksum: 8 (= 100 - 92)
【问题讨论】:
-
好的,我知道简单的解决方案,即在 UDF 中定义 12 个变量,每个 EAN-12 位一个。但是很烂:(
-
为什么
10等于100 - 92?对不起,如果这对你来说是个愚蠢的问题,我对 EAN-12/13 一无所知。
标签: tsql user-defined-functions temp-tables