2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Salesforce】SOQLで選択リストの表示ラベルを取得する

Last updated at Posted at 2021-09-27

背景

  • 例えば以下のような選択リスト項目「PickList__c」があるとします
表示ラベル API参照名
ラベルA a
ラベルB b
ラベルC c
  • これを単純にSOQLでselectしてもAPI参照名の方しか取得できません
HogeObject__c row = [Select PickList__c From HogeObject__c LIMIT 1];
System.debug(row.PickList__c); // 「a」など、API参照名の方のみが表示される
  • 余談ですが、このSOQLの書き方だと取得結果が0件だった場合にExceptionが発生するので、良い書き方ではありません

表示ラベルの取得方法

  • 選択リストの表示ラベルを取得するためにはtolabel関数を使用します
HogeObject__c row = [Select tolabel(PickList__c) From HogeObject__c LIMIT 1];
System.debug(row.PickList__c); // 「ラベルA」など、表示ラベルの方のみが表示される

両方取得する場合

  • 両方取得する場合も見ていきましょう
HogeObject__c row = [Select PickList__c, tolabel(PickList__c) From HogeObject__c LIMIT 1]; // エラー
  • 残念ながらこの書き方ではエラーになります
  • PickList__cを2つselectしており、重複してしまうためです
  • この場合、表示ラベルの方に別名をつけてあげましょう
    • SOQLでは通常、項目に別名をつけることはできませんが、tolabel関数の使用時は指定がサポートされています(As句は不要です)
HogeObject__c row = [Select PickList__c, tolabel(PickList__c) PickListLabel From HogeObject__c LIMIT 1];
System.debug(row.PickList__c); //「a」など、API参照名の方のみが表示される
System.debug(row.get('PickListLabel'); // 「ラベルA」など、表示ラベルの方のみが表示される
  • 上記の書き方で表示ラベル、API参照名の両方が取得できます
  • 別名を使う場合、取得の仕方が異なる(getが必要)ので注意してください
2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?