2025年03月18日
こんにちは、入社一年目のSです。
暦の上ではもう春ですが、都内でも雪が降りまだ寒さの厳しい毎日が続いていますね。
今回は、Salesforceでフローや数式を書く際に意外と間違えがちな「NULL」と「空文字」の違いについてお話していこうと思います。
このふたつはどちらも項目に値が入っていない場合の条件式で使用されますが、そもそもこのふたつの何が違うかについてお話していきます。
「NULL」・・・項目などに何も値が入力されていないこと
「空文字(ブランク)」・・・項目などが空白、もしくは空っぽの値のこと
と、一見同じ条件に見えますが実は大きく異なっています。インターネットのにあった例えを使ってお話をすると
台の上にりんごがあります。そこからりんごをどかし空白のスペースがある状態が「空文字(ブランク)」、台ごとりんごが無くなっている状態が「NULL」になります。
他にもインターネットにわかりやすいたとえがあると思いますが簡単に説明すると、空文字は長さ0の文字列が入っている状態なので項目に何も入っていないわけではなく、文字列が入っている状態を指しています。
Salesforceではそもそも以下のデータ型では空文字を設定できなくなっています。
数値型→数値項目のみ入力が可能なため文字列の入力は不可
日付型→日付の入力のみで文字列の入力は不可
チェックボックス→True、Falseの入力のみ
参照関係→オブジェクトのIDが入るため文字列の入力は不可
選択リスト型→事前に定義した選択肢のみ選択可能
上記の数値型、日付型、チェックボックス、選択リスト型の場合はフローの条件式で
「A項目 Null True」を使用しなければなりません。テキスト型やメール項目,id項目では「A項目 次の条件式と一致する 空文字(ブランク)」を使用することもできます。この違いを意識することでフローの条件式で書き方に迷う必要はなくなると思われます。
最後に Apexで数式を書く際に使われるisEmptyとisBlankの違いについても自分なりに調べたのでお話していこうと思います。
こちらはものすごく簡単で条件に空白を含めるか、含めないかの違いを判断してるだけのものになります。
「String.isEmpty」・・・空白、空 (”)、または null の場合は true、それ以外の場合は false を返します。
「String.isBlank」・・・空 (”) または null の場合は true、それ以外の場合は false を返します。
上記の条件を見ればわかるように半角スペースをNullとして判断したい場合はisEmptyを、そうでない場合はisBlankを使用すればよいということです。
最初は勘違いしやすく、私も何が違うのかわからず条件を付けるとき混乱しましたが、仕組みを理解すると条件作成の際に迷うことが無くなると思うので、まだ知らなかった人はぜひ覚えてみてください!!