2016-12-06 114 views
0

你不知道如何在MS SQL中更改ISNULL()到ISNOTNULL()? 有点像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 is null!')。类似于'x不为空的情况,那么x其他'嘿! x是空的!' end' –

回答

1

你指的是IS NULLIS 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(),如果条件fullfilled

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

而且最后但并非最不重要有COALESCE()返回NULL。它会返回paramters列表的第一个非空值:

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

我不明白为什么你想找回,如果不为null这种方式。该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) 

决胜盘