by Alexey Knyazev
21. декабря 2012 20:15
Одной из частовозникающих задач в пакетах SSIS является замена значений NULL на какое-то конкретное значение. К сожалению, прежде это была не совсем тривиальная задача, т.к. в Integration Services не было оператора аналогичного оператору ISNULL() в языке T-SQL. Точнее даже так: оператор такой есть, но работает он немного иначе.
ISNULL (SSIS) - Возвращает результат в виде логического выражения, в зависимости от того, имеет ли выражение значение NULL.
Поэтому для задачи, в которой основное требование было обработать значения NULL и вывести вместо них значение 0 (ноль), решалась следующим скриптом:
(ISNULL(OpPriceAir) ? (DT_CY)0 : OpPriceAir) + (ISNULL(OpPriceExt) ? (DT_CY)0 : OpPriceExt)
С выходом SQL Server 2012 всё меняется, т.к. в SSIS появился новый оператор REPLACENULL. И теперь та же задача решается следующим образом:
REPLACENULL(OpPriceAir,0) + REPLACENULL(OpPriceExt,0)
Мелочь, но приятно.
17d3968a-9e6c-4dc6-8b92-93fde0bf812c|1|5.0|27604f05-86ad-47ef-9e05-950bb762570c
Tags: SSIS
SQL Server