Salesforce nullと空文字の違いについて

  • URLをコピーしました!

本記事では、混同しやすい null と 空文字 の違いについて、Salesforce(主にApex)での使い分けについて紹介いたします。

目次

①そもそも null や 空文字 とは

null は「値が存在しない」ことを意味します。
つまりカスタム項目やApexクラスで使用される変数が何の値も持っていない状態です。

反対に、空文字 は「値は設定されているが、内容が空である」状態を意味します。
空の文字列が入っており、null と違って値が存在しないわけではありません。
(長さ0の文字列をイメージ)

② null や 空文字 を設定可能なデータ型

値を未設定の場合、 null または 空文字 が設定されるデータ型については、以下の通りです。

■空文字が設定できない(null が設定される)データ型

  1. 数値(Number, Currency, Percent)
    →数値項目のみ許容されるため空文字は設定不可
  2. 日付(Date, Date/Time)
    →日付項目も空文字は設定不可
  3. チェックボックス(Checkbox)
    →チェックボックスは True か False のどちらかの値しか取れないため、空文字は設定不可
  4. 参照(Lookup, Master-Detail)
    →参照項目にはオブジェクトのIDが入るため、空文字は設定不可
  5. 選択リスト(Picklist)
    →事前定義された値から選択するため、空文字を設定不可

■空文字が設定可能なデータ型

  1. テキスト(Text)
  2. ロングテキストエリア(Long Text Area)
  3. リッチテキストエリア(Rich Text Area)
  4. 電話(Phone)
  5. メール(Email)

上記は全てテキスト関連のデータ型であり、null も設定可能です。
(空文字が設定できないデータ型はありますが、null は全てのデータ型に設定可能)

③Apexでの判定について

Apexで使用される 空文字 および null の判定について紹介いたします。

  1. 比較演算子「X == 」
  2. String.isEmpty()
  3. String.isBlank()

※2と3の違いは、ブランクを判定するか否かとなります。
(String.isEmpty()はブランクが含まれる場合False)

1.比較演算子「X == 」

2.String.isEmpty()

3.String.isBlank()

2.String.isEmpty() や 3.String.isBlank()は、空文字の場合とnullの場合の両方で True となっているため、
null の場合を正確に判定したい場合は、1.比較演算子「X == null」を使用するのが好ましいです。
空文字の場合の判定は、1.比較演算子「X == ”」でも3.String.isBlank() でも問題ありません。

まとめ

今回はnull と 空文字 の違いについて、紹介いたしました。
null のみ設定可能なデータ型(空文字が設定できない)が存在するため、注意が必要となります。
実際に判定処理や空の値を設定する際には、本記事の内容を是非参考にしてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次