高级 Integration Services 表达式的示例
适用于:SQL Server Azure 数据工厂中的 SSIS Integration Runtime
本节提供合并多个运算符和函数的高级表达式示例。 如果表达式用于优先约束或有条件拆分转换中,则其计算结果必须为布尔值。 但是,这一限制并不适用于属性表达式、变量、派生列转换或 For 循环容器中使用的表达式。
下列示例使用“AdventureWorks”和 AdventureWorksDW2022
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 表。 表达式比较表和变量中的值。 如果 FromCurrencyCode 或 ToCurrencyCode 列中的项等于变量值,且 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 表。 表达式删除 FirstName、 MiddleName和 LastName 列中的前导空格和尾随空格。 如果 MiddleName 列不为空,则提取其第一个字母,将该中间名首字母与 FirstName 和 LastName中的值连接,并在值之间插入适当的空格。
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 表。 表达式计算产品的销售月份数,并在 SellStartDate 或 SellEndDate 列包含 NULL 时,返回字符串“Unknown”。
!(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
此示例使用 Product 表。 表达式计算 StandardCost 列上的加成,并将结果舍入到小数点后两位。 结果以百分比表示。
ROUND(ListPrice / StandardCost,2) * 100
Related Tasks
相关内容
pragmaticworks.com 上的技术文章 SSIS 表达式小抄表。