Бөлісу құралы:


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

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

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

Синтаксис

  
boolean_expression?expression1:expression2  
  

Аргументы

boolean_expression
Любое допустимое выражение, результатом которого являются TRUE, FALSE или NULL

expression1
Любое допустимое выражение expression.

expression2
Любое допустимое выражение expression.

Типы результата

Тип данных 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_DBTIME2, то другое будет неявно преобразовано в тип данных DT_DBTIME2, после чего будет произведено сравнение для этого типа.

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

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

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

    • Если оба выражения имеют тип даты, но смещение часового пояса присутствует только у одного из них, то предполагается, что дата без смещения выражена по Гринвичу (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  

См. также

Очередность и ассоциативность операторов
Операторы (выражение служб SSIS)