我的 Oracle 数据库中当前使用的 ID 字段是 10 位数字。我的业务要求是此 ID 为 9 个字符而不是 10 个字符。我想考虑将此 ID 转换为字母数字,以便我可以将现有 10 位数字 ID 1 对 1 映射到 9 个字符长的新字母数字值.
Oracle 中(甚至 Oracle 之外)是否有现有功能可以执行此操作,即将所有数字值转换为字母数字,同时还将其从 X 个字符“缩小”为 X-1,并且没有任何映射“冲突”?
我还应该补充一点,一旦完成此转换,我还希望能够生成遵循此新格式的新 ID。
考虑到切换到字母数字会给我带来的“空间”量,所有当前的 10 位数字都适合 5 个字母数字字符的空间。所以我想我只是在 5 个字母数字字符的前面添加 0000 。因此,假设我的“最高”映射 ID 值为“ZZZZ”,那么我会将“0000”放在前面,使其成为“0000ZZZZZ”。我生成的下一个数字 ID 是“0001ZZZZZ”。
最佳答案
最简单的是将其从十进制转换为十六进制。任何 10 位十进制数都可以表示为 9 位十六进制数。
关于algorithm - 如何将一组唯一的数值转换为一组较短长度的唯一字母数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636968/