我正在尝试在 SQL 中模拟客户端在 Excel 中生成的函数。实际上,它们有一个唯一的 10 位数值 (VARCHAR) 作为其企业数据库系统之一的主键。在另一个数据库中,它们需要一个唯一的 5 位字母数字标识符。他们希望 5 位字母数字值代表 10 位数字。所以他们在 excel 中所做的就是将 10 位数字分成对,然后将这些对中的每一对转换为十六进制值,然后将它们缝合在一起。
EXCEL方程为:
=IF(VALUE(MID(A2,1,4))>0,DEC2HEX(VALUE(MID(A2,3,2)))&DEC2HEX(VALUE(MID(A2,5,2)))&DEC2HEX(VALUE(MID (A2,7,2)))&DEC2HEX(VALUE(MID(A2,9,2))),DEC2HEX(VALUE(MID(A2,5,2)))&DEC2HEX(VALUE(MID(A2,7,2) ))&DEC2HEX((值(MID(A2,9,2)))))
我需要与此等效的 SQL。当然,如果有人知道一种更好的方法来实现基于 10 位数字的“5 位字母数字标识符”的目标,我会全力以赴。
添加于 2011 年 8 月 2 日
首先感谢大家的回复。很高兴看到人们愿意帮助甚至享受它!根据所有的回复,我倾向于告诉我的客户他们的意图是合理的,只是他们的方法不合时宜。我也想推荐一个解决方案。所以挑战依然存在,只是稍作修改:
挑战:在 SQL 中,取一个 10 位唯一的 NUMERIC 字符串,并用尽可能少的字符以 ALPHANUMERICAL 方式表示它。结果字符串也必须是唯一的。
请注意,10 位字符串中的前 3-4 个字符可能是零,并且可以将它们剥离以缩短生成的字母数字字符串。不是必需的,但也许有帮助。