有没有一种简单的方法可以从两个整数的组合键创建唯一的整数键? [英] Is there a simple way to create a unique integer key from a two-integer composite key?

查看:21
本文介绍了有没有一种简单的方法可以从两个整数的组合键创建唯一的整数键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

出于与问题不太相关的各种原因,我有一个表,其中有一个由两个整数组成的组合键,我想从这两个数字中创建一个唯一键。我最初的想法是将它们连接在一起,但当我意识到(51,1)的组合键将产生与(5,11)相同的唯一键(即511)时,我很快就遇到了问题。

有没有人有一种聪明的方法从两个整数中生成一个整数,以便生成的整数对于这对起始整数是唯一的?

编辑:在遇到大量令人印象深刻的数学问题后,我意识到我应该包括的一个细节是有问题的键的大小。在原始密钥对中,第一个密钥当前为6位数字,并可能在系统的整个生命周期中保持在7位数字;第二个密钥尚未大于20。考虑到这些限制,问题看起来不那么可怕。

推荐答案

用足够大的值乘1

SELECT id1 * 1000000 + id2

或使用文本串联:

SELECT CAST(CAST(id1 AS nvarchar(10)) + RIGHT('000000' + CAST(id2 AS nvarchar(10)), 6) AS int)

或者跳过整数部分,用非数字分隔ID:

SELECT CAST(id1 AS nvarchar) + ':' + CAST(id2 AS nvarchar)

这篇关于有没有一种简单的方法可以从两个整数的组合键创建唯一的整数键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆