運算式中的資料類型轉換

資料轉換有兩種類型:

  • 隱含轉換,其中運算式評估工具會自動將資料從一種資料類型轉換為另一種。例如,如果將 smallintint 做比較,就會先將 smallint 隱含轉換成 int,然後再執行比較。
  • 明確轉換,您可使用轉換將值 (例如本機變數、資料行或其他運算式) 從一種資料類型轉換為另一種。如需詳細資訊,請參閱<轉換 (SSIS)>。

下圖顯示 BINARY 運算之隱含轉換的結果類型。此資料表中資料行和資料列的交集為具有左 (從) 和右 (至) 類型之運算元的二進位運算結果類型。

資料類型之間的隱含資料類型轉換

帶正負號和不帶正負號的整數之間的交集,應是大於任一引數的帶正負號整數。

結合不帶正負號八位元組整數和帶正負號整數的運算需要明確轉換,才能明定結果格式。

使用單一引數之函數所傳回的結果與引數具有相同資料類型,但有下列例外狀況:

  • DAY、MONTH 和 YEAR 接受日期並傳回整數 (DT_I4) 結果。
  • ISNULL 接受任何 SSIS 資料類型的運算式,並傳回布林 (DT_BOOL) 結果。
  • SQUARE 和 SQRT 接受數值運算式並傳回非整數的數值 (DT_R8) 結果。

如果引數的資料類型相同,則結果為該類型。唯一的例外為關於兩個 DT_DECIMAL 資料類型的值的二進位運算結果,其會傳回 DT_NUMERIC 資料類型的結果。

函數亦會比較字串、日期和布林。在函數比較兩個值之前,運算式評估工具會先執行下列隱含轉換:

  • DT_STR 資料類型的字串會轉換為 DT_WSTR 資料類型。
  • 日期和時間的值會轉換為 DT_DBTIMESTAMP 資料類型。

運算式評估工具無法將任何值隱含轉換為布林。運算式必須包含明確轉換運算。如需詳細資訊,請參閱<轉換 (SSIS)>。

ms141260.note(zh-tw,SQL.90).gif附註:
布林值是邏輯值,而非數字。雖然布林值可以在某些環境下顯示為數字,但不會儲存為數字,而且不同的程式設計語言將布林值表示成數值的方式各有不同,.NET Framework 方法也是如此。 例如,Visual Basic 提供的轉換函數會將 True 轉換為 -1;然而 .NET Framework 中的 System.Convert.ToInt32 方法卻將 True 轉換為 +1。Integration Services 運算式語言則將 True 轉換為 -1。 若要避免錯誤或非預期結果,您所撰寫的程式碼不應該以特定數值表示 TrueFalse。您應該盡可能將布林變數的使用限制在當初所設計的邏輯值上。

運算是可使用資料類型不相容的引數和運算元,但在此情況下,運算式評估工具無法執行隱含資料轉換。例如,運算式評估工具不允許比較字串資料類型的運算元與數值資料類型的運算元。若要執行這項比較,數值運算元必須明確轉換成字串資料類型。運算式語言包含轉換運算子,可支援字串、數值、日期,以及二進位資料類型之間的轉換。如需詳細資訊,請參閱<轉換 (SSIS)>。

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

變更的內容:
  • 提供有關使用布林值的提示。

請參閱

其他資源

Integration Services 運算式概念

說明及資訊

取得 SQL Server 2005 協助