日期:2014-05-17  浏览次数:20488 次

查询一个字段,在查询结果中如何去空?
查出来的字段有些是NULL,现需要将为NULL的数据排除,
除了在查询条件中多加一个“IS NOT NULL”,
请问还有什么更简单的方法?

SELECT [DataSourceID]
FROM [PageControl]
WHERE PageID = 'bec1f1b2-f2a5-45ff-a2cf-48f660b37b3a'
AND DataSourceID IS NOT NULL
去NULL

------解决方案--------------------
也可以这样写,

set ansi_nulls off

SELECT [DataSourceID]
 FROM [PageControl]
 WHERE PageID='bec1f1b2-f2a5-45ff-a2cf-48f660b37b3a'
 AND DataSourceID!=null

------解决方案--------------------
如果你希望方便一点,就这样:


--这样设置后,null也可以用来比较,否则只能用is not null
set ansi_nulls off
 
SELECT [DataSourceID]
 FROM [PageControl]
 WHERE PageID='bec1f1b2-f2a5-45ff-a2cf-48f660b37b3a'
 AND DataSourceID<>null

------解决方案--------------------
isnull(字段,'')<>''
或者
isnull(字段,-1)<>-1
------解决方案--------------------
如果要改,当然可以用isnull()
比如
update tb
set a=isnull(a,'默认值')
where a is null

------解决方案--------------------
这个也可以的,也可以替换的。select isnull(字段名,替换值) from A
------解决方案--------------------
引用:
Quote: 引用:

这个还不简单啊?已经是最简单的了吧。


引用:
好像没有其他方法,难道有特殊要求?


引用:
应该是最简单的了吧,难道还能再简单么?


引用:
如果你希望方便一点,就这样:


--这样设置后,null也可以用来比较,否则只能用is not null
set ansi_nulls off
 
SELECT [DataSourceID]
 FROM [PageControl]
 WHERE PageID='bec1f1b2-f2a5-45ff-a2cf-48f660b37b3a'
 AND DataSourceID<>null


引用:
也可以这样写,

set ansi_nulls off

SELECT [DataSourceID]
 FROM [PageControl]
 WHERE PageID='bec1f1b2-f2a5-45ff-a2cf-48f660b37b3a'
 AND DataSourceID!=null



因为看 ISNULL()函数可以用NULL来替换其它值,所以想着是否也有一个函数用来去除NULL值,而不需要多加一个where条件;
其实没有什么特殊的要求,
只是因为突然想到,所以才提出来的。
嘿嘿……
非常感谢各位的解答


如果要查询,还是必须得用where条件的,除非,你预先把null值都替换为非null的值