この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

case

foreach ステートメント内で SAQL case 演算子を使用して、複数の条件の中から選択するロジックを作成します。case 演算子では、検索 case 式と単純な case 式の 2 つの構文形式がサポートされています。

構文 — 検索 case 式

case...end
式は、case キーワードで始まり、end キーワードで終わります。
when...then
when キーワードと then キーワードで条件ステートメントを定義します。case 式には、1 つ以上の条件ステートメントを含めることができます。
  • search_condition — true または false に評価される任意の論理式。この式は、SAQL でサポートされている任意の値、識別子、論理演算子、比較演算子、スカラー関数 (日付関数や算術関数を含む) を使用して構成できます。有効な search_condition 構文の例を次に示します。
    • xInt < 5
    • price > 1000 and price <= 2000
    • units*round(price_per_unit) < abs(revenue)
  • result_expr — SAQL エンジンで評価できる任意の式。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。式は、任意のデータ型に評価されます。ただし、このデータ型はすべての条件式で一致している必要があります。つまり、result_expr が数値型の場合、result_expr2 … result_exprN も数値型である必要があります。有効な result_expr 構文の例を次に示します。
    • xInt
    • toString('orderDate', "dd/MM/yyyy")
    • "abc"
else
(省略可能) — デフォルトの式を指定できます。else ステートメントは、when/then 条件ステートメントの後に配置する必要があります。else ステートメントは 1 つしか使用できません。
  • default_expr — SAQL エンジンで評価できる任意の式。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。データ型は、前の条件ステートメントで指定した result_expr のデータ型と一致している必要があります。

使用方法 — 検索 case 式

条件ステートメントは、指定した順序で 1 行ずつ評価されます。search_condition が true と評価されると、その行の対応する result_expr が返されます。そのため、複数の条件ステートメントで true が返される場合でも、最初の条件ステートメントのみが評価されます。1 つ以上の when/then ステートメントを指定する必要があります。when/then ステートメントは無制限に指定できます。

省略可能な else ステートメントで、default_expr を設定できます。どの search_condition 式も true に評価されない場合、default_expr 式が返されます。else ステートメントが指定されない場合、デフォルトでは null が返されます。

構文 — 単純な case 式

case...end
式は、case キーワードで始まり、end キーワードで終わります。
  • primary_expr — SAQL エンジンで評価できる任意のスカラー式。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。式は、比較可能な任意のデータ型 (数値、文字列、または日付) に評価されます。有効な primary_expr 構文の例を次に示します。
    • xInt % 3
    • date('year', 'month', 'day')
    • "abc"

スカラー式の入力と出力は単一値を取ります。case で使用する場合、入力値は foreach ステートメントのコンテキストで有効な任意の式になります。

メモ

when...then
when キーワードと then キーワードで条件ステートメントを定義します。case 式には、1 つ以上の条件ステートメントを含めることができます。
  • test_expr — SAQL エンジンで評価できる任意のスカラー式。この式は、任意の値、識別子、およびスカラー関数 (日付関数や算術関数を含む) を使用して構成できますが、primary_expr と同じデータ型に評価される必要があります。有効な test_expr 構文の例を次に示します。
    • 5
    • "abc"
    • abs(profit)
  • result_expr — SAQL エンジンで評価できる任意のスカラー式。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。式は、任意のデータ型に評価されます。ただし、このデータ型はすべての条件ステートメントで一致している必要があります。つまり、result_expr が数値型の場合、result_expr2...result_exprN も数値型である必要があります。result_expr 構文の例を次に示します。
    • xInt
    • toString('orderDate', "dd/MM/yyyy")
    • "abc"
else
(省略可能) else キーワードではデフォルトの式を指定できます。else ステートメントは、when/then 条件ステートメントの後に配置する必要があります。else ステートメントは 1 つしか使用できません。
  • default_expr — SAQL エンジンで評価できる任意のスカラー式。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。データ型は、前の条件ステートメントで指定した result_expr のデータ型と一致している必要があります。

使用方法 — 単純な case 式

条件ステートメントは、指定した順序で 1 行ずつ評価されます。指定の条件ステートメントが primary_expr == test_expr の場合、その行の対応する result_expr が返されます。1 つ以上の when/then ステートメントを指定する必要があります。when/then ステートメントは無制限に指定できます。

省略可能な else ステートメントで、default_expr を設定できます。primary_expr がどの test_expr 条件とも等しくない場合、default_expr が返されます。else ステートメントが指定されない場合、デフォルトでは null が返されます。

次の単純な case 式構文は、検索 case 式構文の一般的な例の簡略表現です。最初のコードブロックは単純な case 式構文で、2 番目のコードブロックは検索 case 式構文です。どちらのコードブロックも意味は同じです。

ヒント

case ステートメントの使用

foreach 句で case 式を使用します。order by、group by、または filter by 句で case 式を使用しないでください。

例

次のクエリ例では、単純な case 式構文が使用されています。

例

次のクエリ例では、検索 case 式構文が使用されています。

null 値の処理

通常、null 値は比較できません。search_condition、primary_expr、または test_expr が null に評価された場合、else で指定された default_expr (else 句が指定されていない場合は null) が返されます。たとえば、次のクエリでは Mea1 が null に評価されると "Other" が返されます。
ただし、is null および is not null 演算子を使用して、null 値の条件を指定することもできます。

日付処理のベストプラクティス

case 式で日付値を使用する前に、SAQL toDate() 関数を使用して、文字列または Unix エポック秒の日付値を変換します。この操作を行うことで、比較の一貫性を最大限に確保できます。

例