空の値の操作

空の値は、特定のメンバ、組、またはセルが空であることを示します。空のセル値は、指定されたセルのデータが基になるファクト テーブルに見つからないこと、あるいは指定されたセルの組の表すメンバの組み合わせをキューブに適用できないことのいずれかを示します。

ms145626.note(ja-jp,SQL.90).gifメモ :
空の値は 0 の値とは異なりますが、ほとんどの場合に 0 として扱われます。

空の値には以下の情報が当てはまります。

  • IsEmpty 関数が TRUE を返すのは、関数に指定されている組で識別されるセルが空の場合に限られます。そうでない場合は、FALSE を返します。
    ms145626.note(ja-jp,SQL.90).gifメモ :
    IsEmpty 関数はメンバが空かどうかを判断できません。メンバが空かどうかを判断するには、IS 演算子を使用します。
  • 空のセル値が数値演算子 (+、-、*、/) のいずれかのオペランドである場合、もう一方のオペランドが空でない値であるなら、空のセル値は 0 として扱われます。オペランドが両方とも空なら、数値演算子は空のセル値を返します。
  • 空のセル値が文字列連結演算子 (+) のオペランドである場合、もう一方のオペランドが空でない値であるなら、空のセル値は空の文字列として扱われます。オペランドが両方とも空なら、文字列連結演算子は空のセル値を返します。
  • 空のセル値が比較演算子 (=、<>、>=、<=、>、<) のいずれかのオペランドである場合、もう一方のオペランドが数値であるか文字列であるかに応じて、空のセル値は 0 または空の文字列として扱われます。オペランドが両方とも空なら、どちらも 0 として扱われます。
  • 数値を照合する場合、空のセル値の照合順序は、0 と同じ位置になります。空のセル値と 0 との照合の場合、空のセル値の照合順序は、0 の前になります。
  • 文字列の値を照合する場合、空のセル値の照合順序は、空の文字列と同じ位置になります。空のセル値と空の文字列との照合の場合、空のセル値の照合順序は、空の文字列の前になります。

MDX ステートメントおよびキューブにおける空の値の処理

多次元式 (MDX) ステートメントでは、空の値を探してから、有効な (空でない) データの入ったセルに対して計算を実行することができます。計算時に空の値を除去することが必要な場合があります。平均値などの計算では、空のセル値が含まれていると正確な結果を得ることができません。

基になるファクト テーブルに空の値が含まれている可能性がある場合、キューブに空のセル値を含めないようにするには、クエリとデータ変更ステートメントを作成し、空の値を除去するか、空の値を他の値に連結することが必要です。さらに、メジャーに対して [NULL 処理] オプションを使用して NULL のファクトを修正し、NULL を 0 または空の値に変換することや、処理中にエラーをスローすることさえできます。

空の値と比較演算子

データに空の値がある場合、論理演算子と比較演算子は、TRUE または FALSE ではなく EMPTY を返すことがあります。このように 3 つの値を生成する論理は、アプリケーション エラーの原因になります。次の表は、空の値の比較を採用した場合の結果を示しています。

下の表は、AND 演算子を 2 つのブール値オペランドに適用した結果を示します。

AND TRUE EMPTY FALSE

TRUE

TRUE

FALSE

FALSE

EMPTY

FALSE

EMPTY

FALSE

FALSE

FALSE

FALSE

FALSE

下の表は、OR 演算子を 2 つのブール値オペランドに適用した結果を示します。

OR TRUE FALSE

TRUE

TRUE

TRUE

EMPTY

TRUE

TRUE

FALSE

TRUE

FALSE

下の表は、NOT 演算子が論理演算子の結果を否定または逆転するようすを示します。

NOT 演算子が適用されるブール式 評価結果

TRUE

FALSE

EMPTY

EMPTY

FALSE

TRUE

参照

関連項目

MDX 関数リファレンス (MDX)
MDX 演算子リファレンス (MDX)

概念

式 (MDX)

その他の技術情報

ディメンションの使用法とディメンションのリレーションシップの定義と構成
レッスン 5 : ディメンションおよびメジャー グループ間のリレーションシップの定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手