2016-12-06 3 views
0

Не знаете, как изменить ISNULL() на ISNOTNULL() в MS SQL? Что-то вроде IFNULL?Поддерживает ли SQL Server 2014 такие функции, как ISNOTNULL()?

Мне нужно сделать это за один шаг.

Set @EMAILhtml = @CSS + @TEXT1 + isnull(@TEXT1,'') + isnull(@table1,'') + isnull(@text2,'') + isnull(@table2,'') + @TEXT3 

Но мне нужно что-то вроде

Set @EMAILhtml = @CSS + @TEXT1 + isNOTnull(@TEXT1,'') + isnull(@table1,'') + isnull(@text2,'') + isnull(@table2,'') + @TEXT3 

Спасибо.

+0

Это не имеет смысла. 'isnull' является таким же, как' coalesce', но для 2 параметров. Это просто значение по умолчанию в случае NULL. например isnull (x, 'Hey! x was null!'). похоже на 'случай, когда x не равен нулю, тогда x else 'Hey! x было null! ' end' –

ответ

1

Вы имеете в виду IS NULL и IS NOT NULL?
как в -

select * from t where x is null 
select * from t where x is not null 
2

Я думаю, что у вас есть что-то неправильно:

ISNULL() используется для установки значения по умолчанию в случае NULL

DECLARE @v1 VARCHAR(10)='test'; 
SELECT ISNULL(@v1,'default') --returns `test`; 
SET @v1=NULL; 
SELECT ISNULL(@v1,'default') --returns `default`; 

Проверка на NULL осуществляется с IS NULL. Противоположное IS NOT NULL

DECLARE @v1 VARCHAR(100)=NULL; 
SELECT CASE WHEN @v1 IS NULL THEN 'v1 is null' END 

третий вариант в этом контексте является NULLIF(), который возвращает NULL если условие fullfilled

DECLARE @v1 VARCHAR(10)='test'; 
SELECT NULLIF(@v1,'test'); --returns NULL, because @v1='test' 

И последнее, но не в последнюю очередь есть COALESCE(). Она возвращает первое ненулевое значение из списка paramters:

DECLARE @v1 VARCHAR(10)=NULL; 
DECLARE @v2 VARCHAR(10)=NULL; 
DECLARE @v3 VARCHAR(10)='test'; 
SELECT COALESCE(@v1,@v2,@v3); --returns 'test' 
1

Я не понимаю, почему вы пытаетесь получить, если не обнулить этот путь. ISNULL() функции помощи подставить значение NULL к дефолту один

Я предлагаю, чтобы попробовать что-то вроде этого:

CASE WHEN column IS NOT NULL THEN 'Hey is not null' ELSE 'Sorry, is null!' END

Надеется, что это может помочь.

0
set @TEXT1 = (case when @table1 is null then null else @TEXT1 end) 

до окончательного набора