出于与问题不太相关的各种原因,我有一个表,其中包含一个由两个整数组成的复合键,我想从这两个数字中创建一个唯一的键。我最初的想法是将它们连接起来,但是当我意识到 (51,1) 的组合键会产生与 (5,11) 相同的唯一键,即 511 时,我很快就遇到了问题。
有没有人有聪明的方法从两个整数中生成一个整数,这样生成的整数对于这对起始整数是唯一的?
编辑:在面对令人印象深刻的数学之后,我意识到我应该包含的一个细节是有问题的键的大小。在原始对中,第一个 key 目前是 6 位数字,并且可能在系统生命周期内保持 7 位数字;第二个键还没有超过 20。考虑到这些限制,问题看起来不那么令人生畏了。
最佳答案
如果您希望生成的 key 包含与其两个组件相同的位数,则可以从数学上证明这是不可能的。但是,如果您从两个 32 位整数开始,并且可以使用 64 位整数作为结果,您显然可以执行以下操作:
key1 << 32 | key2
SQL 语法
SELECT key1 * POWER(2, 32) + key2
关于tsql - 有没有一种简单的方法可以从两个整数复合键创建唯一的整数键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745048/