2

Oracle データベースで現在使用されている ID フィールドは 10 桁の数字です。この ID を 10 文字ではなく 9 文字にするというビジネス要件があります。この ID を英数字に変換して、既存の 10 桁の ID を 9 文字の長さの新しい英数字の値に 1 対 1 でマッピングできるようにすることを検討したいと考えています。 .

これを行う既存の機能が Oracle に (または Oracle の外部にさえ) ありますか。つまり、すべての数値を英数字に変換するだけでなく、X 文字から X-1 に「縮小」し、マッピングの「衝突」を持たない機能はありますか?

また、この変換を行ったら、この新しい形式に従う新しい ID を生成できるようにしたいことも付け加えておく必要があります。

英数字に切り替えることで得られる「余地」の量を考えると、現在の 10 桁の数字はすべて、5 文字の英数字のスペースに収まります。そのため、5 つの英数字の前に 0000 を付けるだけでよいと考えています。したがって、「最高」のマップ ID 値が「ZZZZ」であるとすると、「0000」を前に付けて「0000ZZZZZ」にします。次に生成する番号 ID は「0001ZZZZZ」です。

4

2 に答える 2

3

最も簡単なのは、10進数から16進数に変換することです。10桁の10進数は、9桁の16進数として表すことができます。

于 2012-11-30T00:04:53.223 に答える
0

ID を base36 でエンコードするだけでよいようです: en.wikipedia.org/wiki/Base_36

于 2012-11-30T00:15:07.450 に答える