SalesforceレコードIDの15桁と18桁は相互に変換できる

SalesforceレコードID (SFID) には15桁と18桁の2種類があり、同一のレコードに対してどちらの種類のIDも存在します。
異なるのは、末尾の3桁だけです。

a1z9D000000ABTH
a1z9D000000ABTHQA4

(IDはサンプル)

18桁の方は後発で、世の中に大文字小文字の区別をしないRDBMSがあるために生まれました。
すなわち、15桁の方は大文字小文字の区別をもって一意とし、18桁の方は大文字小文字の区別なく一意となります。

増えた3桁は、15桁のSFIDの何桁目が大文字であるかを保持しています。


18桁→15桁

上記のような所以なので、末尾3桁を削除すればOKです。


15桁→18桁

増えた3桁は15桁のSFIDの何桁目が大文字であるかを表すので、15桁のSFIDから算出することができます。

やっていることは、

  1. 5桁ずつ3ブロックに分ける
  2. 1ブロックにつき、その中の何桁目が大文字であるかを表す1文字を算出
  3. それぞれ16, 17, 18桁目に追加

これだけです。

先述の a1z9D000000ABTH を例に実際にやってみます。

1. 15桁のSFIDを5桁ずつ3ブロックに区切る

a1z9D / 00000 / 0ABTH

2. 各ブロックについて対応する文字を算出

1ブロック目。5桁目が大文字なので5ビット目を立てる

2ブロック目。大文字はなし

3ブロック目。2-5桁目が大文字なので、2-5ビット目を立てる。

3. くっつける

a1z9D / 00000 / 0ABTH / Q / A / 4
a1z9D000000ABTHQA4


参考(Salesforceヘルプ)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

15 + four =