? : (Условное) (выражение SSIS)

Область применения:SQL Server среда выполнения интеграции SSIS в Фабрика данных Azure

Возвращает одно из двух выражений в зависимости от результата вычисления булева выражения. Если логическое выражение принимает значение 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, после чего будет произведено сравнение для этого типа. Дополнительные сведения см. в разделе Integration Services Data Types in Expressions.

    • Если одно из выражений имеет тип данных DT_DBTIMESTAMP2, другое выражение неявно преобразуется к типу DT_DBTIMESTAMP2, после чего выполняется сравнение значений типа DT_DBTIMESTAMP2.

    • Если значение одного из выражений имеет тип данных DT_DBTIME2, то другое будет неявно преобразовано в тип данных DT_DBTIME2, после чего будет произведено сравнение для этого типа.

    • Если значение одного из выражений имеет тип данных, отличный от DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 или DT_DBTIME2, то перед началом сравнения значения будут преобразованы в тип данных DT_DBTIMESTAMP.

    При сравнении выражений система исходит из следующих предположений.

    • Если каждое выражение имеет тип данных, включающий доли секунды, система предполагает, что в типе данных с наименьшим количеством разрядов для долей секунды остальные разряды заполнены нулями.

    • Если каждое выражение имеет тип данных date, но только одно из них содержит смещение часового пояса, система предполагает, что тип данных date без смещения часового пояса задан в координированном всемирном времени (UTC).

Дополнительные сведения о типах данных см. в разделе Integration Services Data Types.

Примеры выражений

Этот пример показывает выражение, принимающее значение savannah или unknownв зависимости от условия.

@AnimalName == "Elephant"? "savannah": "unknown"  

Этот пример показывает выражение, ссылающееся на столбец ListPrice . ListPrice имеет тип данных DT_CY. В выражении по условию происходит умножение ListPrice на 0,2 или 0,1.

ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1