分享方式:


進階 Integration Services 運算式範例

適用於: SQL Server Azure Data Factory 中的 SSIS Integration Runtime

本節提供組合多個運算子和函數的進階運算式範例。 如果在優先順序條件約束或「條件式分割」轉換中使用運算式,則評估結果必須為布林。 不過,該條件約束不會套用至屬性運算式、變數、「衍生的資料行」轉換,或「For 迴圈」容器中使用的運算式。

下列範例使用 AdventureWorksAdventureWorksDW2022 Microsoft SQL Server 資料庫。 各範例代表其使用的資料表。

布林運算式

  • 這個範例使用 Product 資料表。 運算式會評估 SellStartDate 資料行中的月份項目,而如果月份為六月或更晚的月份,則傳回 TRUE。

    DATEPART("mm",SellStartDate) > 6  
    
  • 這個範例使用 Product 資料表。 運算式會評估 ListPrice 資料行除以 StandardCost 資料行的進位結果,而如果結果大於 1.5,則傳回 TRUE。

    ROUND(ListPrice / StandardCost,2) > 1.50  
    
  • 這個範例使用 Product 資料表。 如果三項運算的評估結果均為 TRUE,則運算式會傳回 TRUE。 如果 Size 資料行和 BikeSize 變數的資料類型不相容,則運算式需要明確轉換,如第二個範例所示。 轉換為 DT_WSTR 包括字串長度。

    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize  
    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE  && Size != (DT_WSTR,10)@BikeSize  
    
  • 此範例使用 CurrencyRate 資料表。 運算式會比較資料表中和變數的值。 如果 FromCurrencyCodeToCurrencyCode 資料行中的項目等於變數值,且 AverageRate 中的值大於 EndOfDayRate中的值,則會傳回 TRUE。

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate  
    
  • 此範例使用 Currency 資料表。 如果 Name 中的第一個字元不是 a 或 A,則運算式會傳回 TRUE。

    SUBSTRING(UPPER(Name),1,1) != "A"  
    

    下列運算式提供相同的結果,但更有效率,因為只會將一個字元轉換成大寫。

    UPPER(SUBSTRING(Name,1,1)) != "A"  
    

非布林運算式

非布林運算式可用於「衍生的資料行」轉換、屬性運算式,以及「For 迴圈」容器。

  • 這個範例使用 Contact 資料表。 運算式會移除 FirstNameMiddleNameLastName 資料行中開頭和尾端的空格。 如果不是 Null,則會擷取 MiddleName 資料行的第一個字母、串連中間的縮寫與 FirstNameLastName中的值,以及在各值之間插入適當的空格。

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)  
    
  • 這個範例使用 Contact 資料表。 運算式會驗證 Salutation 資料行中的項目。 它會傳回 Salutation 項目或空白字串。

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""  
    
  • 這個範例使用 Product 資料表。 運算式會將 Color 資料行中的第一個字元轉換成大寫,並將其餘字元轉換成小寫。

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))  
    
  • 這個範例使用 Product 資料表。 運算式會計算產品售出的月數,而且如果 SellStartDateSellEndDate 資料行包含 NULL,則會傳回「Unknown」字串。

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"  
    
  • 這個範例使用 Product 資料表。 運算式會計算 StandardCost 資料行上的標記,並將結果進位至兩位有效位數。 此結果會以百分比表示。

    ROUND(ListPrice / StandardCost,2) * 100  
    

在資料流程元件中使用運算式

pragmaticworks.com 上的技術文件: SSIS 運算式小抄