2015-06-25 2 views

ответ

5

У нас нет функции coalesce. ISNULL на нашем языке выражений сильно отличается от функции TSQL с тем же именем.

Язык выражения SSIS ISNULL оценивает операнд и возвращает значение true, если оно является нулевым значением, иначе оно возвращает значение false.

Вместо этого, чтобы выполнить операцию, подобную коалесценции, нам необходимо использовать оператор ISNULL и тройную функцию. ?: Прочтите это как Test : True condition : False condition. Предполагая, что MyColumn имеет строку типа Юникод, это определит, была ли MyColumn ложной. Если это так, он будет жестко закодировать строку Вторичное условие. В противном случае он вернет значение MyColumn. Это было бы эквивалентно Tsql в `сливаются (MyColumn,«Secondary Состояние»)

ISNULL(MyColumn) ? "Secondary Condition" : MyColumn 

Coalesce позволяет несколько условий поиска, так что-то вроде coalesce(Column0, Column1, Column2) бы гнезда тройные операторы вместе

ISNULL(Column0) ? (ISNULL(Column1) ? Column2: Column1) : Column0 

Это становится уродливым, а но концепция остается прежней - продолжайте вложенность, пока вы не сравните все уровни, которые вам нужно проверить.

+0

Спасибо, работает отлично! Это то, чего я хотел! –

-1

Функция Coalesce ограничивается только TSQL. либо в SSIS/SSRS у нас нет функции Coalesce. Таким образом, чтобы получить желаемый результат, мы должны использовать функции ISNULL или ISNOTHING в SSIS/SSRS. В этом случае это будет вложенная функция ISNULL.

+0

Не могли бы вы сообщить мне, почему вы проголосовали здесь. Я дал неправильное предложение? –