式のデータ型変換
データ変換には、次の 2 種類があります。
- 式エバリュエータが、あるデータ型を別のデータ型に自動的に変換する、暗黙的な変換。たとえば、smallint 型を int 型と比較する場合、比較を実行する前に、smallint 型から int 型に暗黙的に変換されます。
- キャストを使用して、ローカル変数、列、他の式などの値のデータ型を別のデータ型に変換する、明示的な変換。詳細については、「キャスト (SSIS)」を参照してください。
次の図は、BINARY 演算での暗黙的な変換の結果のデータ型を示しています。この表の列と行の交差部分は、左 (変換元) と右 (変換先) の型のオペランドによるバイナリ演算の結果のデータ型です。
符号付き整数と符号なし整数の積集合は符号付き整数になり、この値はどちらかの引数よりも大きい場合があります。
符号なし 8 バイト整数と符号付き整数を結合する演算では、結果の形式を明確化するため、明示的なキャストが必要です。
関数の引数が 1 つの場合、その関数は引数と同じデータ型の結果を返します。ただし、次の場合は除きます。
- DAY、MONTH、および YEAR は、日付型から整数 (DT_I4) 型の結果を返します。
- ISNULL は、任意の SSIS データ型の式からブール (DT_BOOL) 型の結果を返します。
- SQUARE および SQRT は、数値式から非整数の数値 (DT_R8) 型の結果を返します。
複数の引数が同じデータ型の場合、結果も同じデータ型になります。ただし、DT_DECIMAL データ型の 2 つの値におけるバイナリ演算の結果だけは例外で、DT_NUMERIC データ型の結果を返します。
関数を使用して、文字列、日付、ブール値を比較することもできます。関数が 2 つの値を比較する前に、式エバリュエータは次の暗黙的な変換を実行します。
- DT_STR データ型の文字列は、DT_WSTR データ型に変換されます。
- 日付および時間の値は、DT_DBTIMESTAMP データ型に変換されます。
式エバリュエータは、どのような値もブール値に暗黙的に変換することはできません。この場合、式に明示的なキャスト演算を含める必要があります。詳細については、「キャスト (SSIS)」を参照してください。
メモ : |
---|
ブール値は論理値であって、数値ではありません。ブール値は一部の環境で数値として表示される場合がありますが、数値として格納されることはありません。また、.NET Framework のメソッドと同様に、さまざまなプログラミング言語でブール値が個別の数値として表されます。 たとえば、Visual Basic で使用できる変換関数は True を -1 に変換しますが、.NET Framework の System.Convert.ToInt32 メソッドは True を +1 に変換します。Integration Services 式言語は True を -1 に変換します。 エラーや予期しない結果が発生しないようにするには、True と False を特定の数値で表現するコードを記述しないようにする必要があります。可能な限り、ブール型の変数には、仕様で定められている論理値以外の値を使用しないようにしてください。 |
式には、互換性のないデータ型を持つ引数とオペランドを使用できます。この場合、式エバリュエータは、暗黙的なデータ変換を実行できません。たとえば、式エバリュエータでは、文字列データ型のオペランドを数値データ型のオペランドと比較することはできません。この比較を実行するには、数値オペランドを文字列データ型に明示的にキャストする必要があります。式言語には、文字列、数値、日付、およびバイナリ データ型間のキャストをサポートするキャスト演算子が含まれます。詳細については、「キャスト (SSIS)」を参照してください。
変更履歴
リリース | 履歴 |
---|---|
2006 年 7 月 17 日 |
|