2

我的 Oracle 数据库中使用的当前 ID 字段是 10 位数字。我对此 ID 有 9 个字符而不是 10 个字符的业务要求。我想考虑将此 ID 转换为字母数字,以便我可以将现有的 10 位 ID 1 对 1 映射到新的 9 个字符长的字母数字值.

Oracle(甚至在 Oracle 之外)中是否存在可以执行此操作的现有功能,即将所有数值转换为字母数字,但也将其从 X 字符“缩小”为 X-1,并且没有任何映射“冲突”?

我还应该补充一点,一旦我进行了这种转换,我还希望能够生成遵循这种新格式的新 id。

鉴于切换到字母数字给我的“空间”量,所有当前的 10 位数字都将适合 5 个字母数字字符的空间。所以我想我只是将 0000 放在 5 个字母数字字符的前面。因此,假设我的“最高”映射 ID 值是“ZZZZ”,那么我会在前面加上“0000”使其成为“0000ZZZZZ”。我生成的下一个数字 ID 将是“0001ZZZZZ”。

4

2 回答 2

3

最简单的是将它从十进制转换为十六进制。任何 10 位十进制数都可以表示为 9 位十六进制数。

于 2012-11-30T00:04:53.223 回答
0

看起来我可能需要做的就是对我的 ID 进行 base36 编码:en.wikipedia.org/wiki/Base_36

于 2012-11-30T00:15:07.450 回答