Расширенные выражения служб Integration Services
В этом разделе даются примеры расширенных выражений, объединяющих несколько операторов и функций. Если выражение использует управление очередностью или преобразование «Условное разбиение», результат его оценки должен быть логическим. Это ограничение, однако, не применяется к выражениям, используемым в выражениях свойств, переменных, преобразовании «Производный столбец» или в контейнере «цикл по элементам».
В следующих примерах используется база данных База данных AdventureWorks2008R2. В каждом примере указываются используемые в нем таблицы.
Логические выражения
В этом примере используется таблица Product. Выражение оценивает значение месяца в столбце SellStartDate и возвращает значение TRUE, если месяцем является любой месяц года, начиная с июня.
DATEPART("mm",SellStartDate) > 6
В этом примере используется таблица Product. Выражение оценивает округленный результат деления столбца ListPrice на столбец StandardCost и возвращает значение TRUE, если результат больше 1,5.
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. Выражение сравнивает значения в таблице и значения переменных. Он возвращает значение TRUE, если значения столбцов FromCurrencyCode или ToCurrencyCode равны значениям переменной, а значение AverageRate больше значения EndOfDayRate.
(FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
В этом примере используется таблица Currency. Выражение возвращает значение TRUE, если первый символ в столбце Name не «a» и не «A».
SUBSTRING(UPPER(Name),1,1) != "A"
Следующее выражение дает тот же результат, но оно более эффективно, т.к. в верхний регистр переводится только одна буква.
UPPER(SUBSTRING(Name,1,1)) != "A"
Нелогические выражения
Нелогические выражения используются в преобразовании «Производный столбец», в выражениях свойств и в контейнере «цикл по элементам».
В этом примере используется таблица Person. Выражение удаляет начальные и конечные пробелы из столбцов FirstName, MiddleName и LastName. Оно выделяет первую букву столбца MiddleName, если она не NULL, присоединяет инициал второго имени и значения столбцов FirstName и LastName, а затем вставляет необходимые пробелы между значениями.
TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
В этом примере используется таблица Person. Выражение проверяет значения в столбце Title. Оно возвращает значение столбца Title или пустую строку.
(Title == "Sr." || Title == "Ms." || Title == "Sra." || Title == "Mr.") ? Title : ""
В этом примере используется таблица Product. Выражение преобразует первую букву в столбце Color в верхний регистр, а остальные символы — в нижний регистр.
UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))
В этом примере используется таблица Product. Выражение вычисляет номер месяца, в котором был продан продукт, и возвращает строку «Unknown», если столбец SellStartDate или SellEndDate содержит NULL.
!(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
В этом примере используется таблица Product. Выражение вычисляет наценку на значение столбца StandardCost и округляет результат с точностью до двух знаков. Результат представляется в виде процентного значения.
ROUND(ListPrice / StandardCost,2) * 100