構文 (SSIS)
Integration Services 式の構文は、C 言語および C# 言語が使用する構文と同様です。式には、識別子 (列および変数)、リテラル、演算子、関数などの要素が含まれます。このトピックでは、式エバリュエータの構文がさまざまな式要素を適用する際の、一意の必要条件の概要について説明します。
特定の演算子と関数を使用するサンプル式については、「演算子 (SSIS)」および「関数 (SSIS)」の各演算子と関数のトピックを参照してください。
複数の演算子と関数、および識別子とリテラルを使用するサンプル式については、「Integration Services 式の詳細」を参照してください。
プロパティの式で使用するサンプル式については、「パッケージでのプロパティ式の使用」を参照してください。
場合によって、Integration Services 式の長さは 4,000 文字に制限されます。式の評価結果が Integration Services データ型の DT_WSTR または DT_STR である場合、式は 4,000 文字に切り捨てられます。サブ式の結果のデータ型が DT_STR または DT_WSTR である場合、式全体の結果のデータ型に関係なく、そのサブ式も同様に 4,000 文字に切り捨てられます。
切り捨てが発生した Integration Services コンポーネントに応じて、切り捨ての処理方法は異なります。
派生列や条件分割などの変換では、切り捨てを無視するか、エラー出力を使用して切り捨てが発生するデータ行を別の出力にリダイレクトするように変換を構成することにより、切り捨てを効率よく処理できます。
実行時に、プロパティ式、変数、および優先順位制約の値の設定に使用される式が切り捨てられると、エラーが発生し、パッケージが失敗する場合があります。
デザイン時に、文字列リテラルの切り捨てがパイプラインで発生すると警告が生成され、実行時に発生するとエラーが生成されます。
識別子
式には、列および変数の識別子を含めることができます。列はデータ ソースで生成されるか、またはデータ フローの変換によって作成できます。式では、系列 ID を使用して列を参照できます。系列 ID は、パッケージの要素を一意に識別する数値です。系列 ID を式の内部で参照する場合、系列 ID にポンド (#) プレフィックスを含める必要があります。たとえば、系列 ID 138 を参照するには、#138 を使用します。
式には、SSIS で用意されているシステム変数と、カスタム変数を含めることができます。変数を式の内部で参照する場合、変数に @ プレフィックスを含める必要があります。たとえば、Counter 変数を参照する場合、@Counter を使用します。@ 文字は変数名の一部ではなく、式エバリュエータに対して識別子が変数であることを示すだけのものです。詳細については、「識別子 (SSIS 式)」を参照してください。
リテラル
式には、数値、文字列、およびブール値のリテラルを含めることができます。文字列リテラルを式で使用するには、引用符で囲む必要があります。数値リテラルおよびブール値のリテラルには、引用符は付けません。式言語には、通常エスケープされる文字のエスケープ シーケンスが含まれます。詳細については、「リテラル (SSIS)」を参照してください。
演算子
式エバリュエータで提供される演算子セットの機能は、Transact-SQL、C++、C# などの言語に含まれる、演算子セットの機能と同様です。ただし、式言語には別の演算子が含まれており、周知の記号とは異なる記号が使用されます。詳細については、「演算子 (SSIS)」を参照してください。
名前空間を解決する演算子
式では名前空間を解決する演算子 (::) が使用され、同じ名前を持つ複数の変数を明確に識別します。名前空間を解決する演算子を使用すると、変数をその名前空間で修飾でき、これによって、同じ名前を持つ複数の変数をパッケージ内で使用できます。
キャスト演算子
キャスト演算子は、式の結果、列の値、変数の値、および定数を、あるデータ型から別のデータ型に変換します。式言語が提供するキャスト演算子は、C および C# 言語が提供するものと同様です。Transact-SQL では、CAST 関数と CONVERT 関数によってこの機能が提供されます。キャスト演算子の構文は、CAST 関数や CONVERT 関数が使用する構文と、次の点が異なります。
式を引数として使用できます。
構文に CAST キーワードが含まれません。
構文に AS キーワードが含まれません。
条件演算子
条件演算子は、ブール式の評価に基づいて 2 つの式のうちのいずれかの式を返します。式言語が提供する条件演算子は、C および C# 言語が提供する条件演算子と同様です。多次元式 (MDX) では、IIF 関数が同様の機能を提供します。
論理演算子
式言語では、論理 NOT 演算子用に ! 文字がサポートされます。Transact-SQL では、! 演算子は関連する演算子セットに組み込まれています。たとえば、Transact-SQL では > 演算子と !> 演算子が用意されています。SSIS 式言語では、! 演算子とその他の演算子の組み合わせはサポートされません。たとえば、! と > を組み合わせて !> にすることはできません。ただし、この式言語では、等しくない比較を表すために、!= の文字の組み合わせがあらかじめサポートされています。
等価演算子
式エバリュエータの文法では、== 等価演算子が用意されています。この演算子は、Transact-SQL での = 演算子、および C# での == 演算子と同等です。
関数
式言語には、日付と時刻の関数、数学関数、および文字列関数が提供されています。これらの関数は、Transact-SQL 関数や C# のメソッドと同様です。
いくつかの関数は、Transact-SQL 関数と同じ名前を持っていますが、式エバリュエータの関数の機能は微妙に異なります。
Transact-SQL の ISNULL 関数は指定した値に NULL 値を置き換えますが、式エバリュエータの ISNULL 関数は、式が NULL であるかどうかに基づくブール値を返します。
Transact-SQL の ROUND 関数には、結果セットを切り捨てるオプションが含まれますが、式エバリュエータの ROUND 関数には含まれません。
詳細については、「関数 (SSIS)」を参照してください。