式の暗黙的なデータ型変換

データ型の暗黙的な変換は、式エバリュエーターがあるデータ型を別のデータ型に自動的に変換するときに行われます。たとえば、smallint 型を int 型と比較する場合、比較を実行する前に、smallint 型から int 型に暗黙的に変換されます。

引数やオペランドに互換性のないデータ型がある場合は、式エバリュエーターは暗黙的なデータ変換を実行できません。また、式エバリュエーターは、どのような値もブール値に暗黙的に変換することはできません。代わりに、キャスト演算子を使用して引数とオペランドを明示的に変換する必要があります。詳細については、「キャスト (SSIS 式): SSIS データ型の変換」を参照してください。

次の図は、BINARY 演算での暗黙的な変換の結果のデータ型を示しています。この表の列と行の交差部分は、左 (変換元) と右 (変換先) の型のオペランドによるバイナリ演算の結果のデータ型です。

データ型間における暗黙的なデータ型の変換

符号付き整数と符号なし整数の積集合は符号付き整数になり、この値はどちらかの引数よりも大きい場合があります。

演算子は、文字列、日付、ブール値、およびその他のデータ型を比較します。演算子が 2 つの値を比較する前に、式エバリュエーターは特定の暗黙的な変換を実行します。詳細については、次のトピックを参照してください。

関数の引数が 1 つの場合、その関数は引数と同じデータ型の結果を返します。ただし、次の場合は除きます。

  • DAY、MONTH、および YEAR は、日付型から整数 (DT_I4) 型の結果を返します。

  • ISNULL は、任意の SSIS データ型の式からブール (DT_BOOL) 型の結果を返します。

  • SQUARE および SQRT は、数値式から非整数の数値 (DT_R8) 型の結果を返します。

複数の引数が同じデータ型の場合、結果も同じデータ型になります。ただし、DT_DECIMAL データ型の 2 つの値におけるバイナリ演算の結果だけは例外で、DT_NUMERIC データ型の結果を返します。

外部リソース

pragmaticworks.com の技術資料「SSIS 式チート シート