根據布爾表達式的評估,傳回兩個表達式的其中一個。 如果布爾表達式評估為 TRUE,則會評估第一個表達式,而結果為表達式結果。 如果布爾表達式評估為 FALSE,則會評估第二個表達式,而其結果為表達式結果。
語法
boolean_expression?expression1:expression2
論點
boolean_expression
這是評估為TRUE、FALSE 或 NULL 的任何有效表達式。
expression1
為任何有效運算式。
expression2
為任何有效運算式。
結果類型
expression1 或 expression2 的數據類型。
備註
如果 boolean_expression 評估為 NULL,則表示式結果為 NULL。 如果選取的表達式 expression1 或 expression2 為 NULL,則結果為 NULL。 如果選取的表達式不是 NULL,但未選取的表達式是 NULL,則結果會是所選表達式的值。
如果 expression1 和 expression2 具有相同的數據類型,結果就是該數據類型。 下列其他規則適用於結果類型:
DT_TEXT數據類型要求 expression1 和 expression2 具有相同的代碼頁。
具有DT_BYTES數據類型的結果長度是較長自變數的長度。
表達式集 expression1 和 expression2 必須評估為有效的數據類型,並遵循下列其中一個規則:
數值 — expression1 與 expression2 都必須是數值資料類型。 資料類型的交集必須是運算式評估工具執行之隱含數值轉換規則中所指定的數值資料類型。 兩個數值資料類型的交集不能是 Null。 如需相關資訊,請參閱 Integration Services Data Types in Expressions。
字串expression1 和 expression2 都必須是字串數據類型:DT_STR或DT_WSTR。 兩個運算式可以評估為不同的字串資料類型。 結果具有長度較長自變數的DT_WSTR數據類型。
日期、時間或日期/時間expression1 和 expression2 都必須評估為下列其中一種數據類型:DT_DBDATE、DT_DATE、DT_DBTIME、DT_DBTIME2、DT_DBTIMESTAMP、DT_DBTIMESTAMP2、DT_DBTIMESTAPMOFFSET或DT_FILETIME。
備註
系統不支援評估為時間資料類型之運算式與評估為日期或日期/時間資料類型之運算式之間的比較。 系統會產生錯誤。
比較運算式時,系統會以列出的順序套用下列轉換規則:
當兩個運算式評估為相同的資料類型時,會擲行該資料類型的比較。
如果一個運算式為 DT_DBTIMESTAMPOFFSET 資料類型,另一個運算式會以隱含的方式轉換為 DT_DBTIMESTAMPOFFSET,而且會執行 DT_DBTIMESTAMPOFFSET 比較。 如需相關資訊,請參閱 Integration Services Data Types in Expressions。
如果一個運算式為 DT_DBTIMESTAMP2 資料類型,另一個運算式會以隱含的方式轉換為 DT_DBTIMESTAMP2,而且會執行 DT_DBTIMESTAMP2 比較。
如果一個運算式為 DT_DBTIME2 資料類型,另一個運算式會以隱含的方式轉換為 DT_DBTIME2,而且會執行 DT_DBTIME2 比較。
如果一個運算式的類型不屬於 DT_DBTIMESTAMPOFFSET、DT_DBTIMESTAMP2 或 DT_DBTIME2,運算式會在進行比較前,轉換為 DT_DBTIMESTAMP 資料類型。
比較運算式時,系統會進行下列假設:
如果每個運算式都是包含毫秒的資料類型,系統會假設毫秒位數最少之資料類型的其餘位數為零。
如果每個運算式都是日期資料類型,但是只有一個運算式具有時區時差,則系統會假設沒有時區時差的日期資料類型為 Coordinated Universal Time (UTC)。
如需有關資料類型的詳細資訊,請參閱< Integration Services Data Types>。
表達式範例
此範例顯示有條件地評估為 savannah 或 unknown的表達式。
@AnimalName == "Elephant"? "savannah": "unknown"
此範例顯示參考 ListPrice 數據行的表示式。 ListPrice 具有DT_CY數據類型。 表達式會有條件地將 ListPrice 乘以 .2 或 .1。
ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1