如何将一组唯一数值转换为较短长度的唯一字母数值?

时间:2012-11-29 23:57:07

标签: algorithm oracle

我的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”。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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