? : (Условное выражение) (выражение служб SSIS)
Возвращает одно из двух выражений на основе вычисления логического выражения. Если логическое выражение принимает значение TRUE, то возвращается результат вычисления первого выражения. Если логическое выражение принимает значение FALSE, возвращается результат вычисления второго выражения.
Синтаксис
boolean_expression?expression1:expression2
Аргументы
boolean_expression
Любое допустимое выражение, результатом которого являются TRUE, FALSE или NULLexpression1
Любое допустимое выражение.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 не может быть значением пересечения двух числовых типов данных. Дополнительные сведения см. в разделе Неявное преобразование типов данных в выражениях.
Строковый тип И 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, после чего будет произведено сравнение для этого типа. Дополнительные сведения см. в разделе Типы данных в выражениях служб Integration Services.
Если значение одного из выражений имеет тип данных DT_DBTIMESTAMP2, то другое будет неявно преобразовано в тип данных DT_DBTIMESTAMP2, после чего будет произведено сравнение для этого типа.
Если значение одного из выражений имеет тип данных DT_DBTIME2, то другое будет неявно преобразовано в тип данных DT_DBTIME2, после чего будет произведено сравнение для этого типа.
Если значение одного из выражений имеет тип данных, отличный от DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 или DT_DBTIME2, то перед началом сравнения значения будут преобразованы в тип данных DT_DBTIMESTAMP.
При сравнении выражений система исходит из следующих предположений.
Если оба выражения имеют тип данных, включающий доли секунды, то предполагается, что для типа, имеющего меньшее число разрядов, в недостающих разрядах содержатся нули.
Если оба выражения имеют тип даты, но смещение часового пояса присутствует только у одного из них, то предполагается, что дата без смещения выражена по Гринвичу (UTC).
Дополнительные сведения о типах данных см. в разделе Типы данных служб Integration Services.
Примеры
Этот пример показывает выражение, принимающее значение savannah или unknown в зависимости от условия.
@AnimalName == "Elephant"? "savannah": "unknown"
Этот пример показывает выражение, ссылающееся на столбец ListPrice. ListPrice имеет тип данных DT_CY. Это выражение умножает ListPrice на .2 или .1 по условию.
ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1
См. также