标签归档:null专题

mssql sqlserver sql脚本检索null的方法分享


摘要:
下文讲述在sql server数据库中,检索数据表中存在null数据的方法分享,如下所示:
实验环境:sql server 2008 R2


下文将通过举例的方式分享sql检索null(空值)的方法分享,和null空值检索使用索引的情况分析

    create table test
(keyId int identity,info varchar(30))
go

---生成1万行基础数据

declare @i int
set @i =0 
while @i<10000
begin 
  
  if @i%9 =0 
  begin
     insert into test(info)values(null)
  end
  else
  begin
    insert into test (info)
      values(convert(varchar(20),@i))
  end
 
 set @i = @i +1 
end




---查询列中 包含null值、不包含null值、检索特定值得方法的方法

select info from test  where info is null 

select info from test  where info is not  null 
  
select info from test  where info ='1'


---建立索引
 IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[test]') AND name = N'IX_test_Info')
DROP INDEX [IX_test_Info] ON [dbo].[test]  
GO

 
CREATE NONCLUSTERED INDEX [IX_test_Info] ON [dbo].[test] 
(
	[info] ASC
)
go

/*
建立索引后
  查询列中 包含null值、不包含null值、检索特定值得方法的方法
  所有检索操作都会走相关索引,如下所示:

*/
select info from test  where info is null 

select info from test  where info is not  null 
  
select info from test  where info ='1'


--truncate table test 
--drop table test 

mssql_sqlserver_null_检索及索引查找

mssql_sqlserver_null_检索及索引查找



总结:
包含null值的列数据 ,需使用is null
不包含null值的列数据,需使用is not null
----------------------
如果包含null列上建立索引后,使用is null 或is not null,也会走相应的索引查找。

mssql sqlserver null数据值简介


摘要:
下文将详细说明null(空值)在sqlserver数据库中的作用,如下所示:
实验环境:sql server 2008 R2



null数据简介:

null在sqlserver表示未知。通常被大家称之为为”空值”。
null值不等于任何数值,sqlserver中null为”unknown”。



null数据举例应用:

   ---查询列值为null的方法
   select * from tableName where [列名]  is null 
   ---查询列值为非null的方法
   select * from tableName where [列名]  is not null 

   ------------null 同0比较方法
   if (null >1)   ---此条件不会成立
   begin
     print 'test'  
   end 

   if not (null >1)   ---此条件不会成立
   begin
     print 'test'
   end 

     if (null =null)   ---此条件不会成立
   begin
     print 'test'  
   end 

   if not (null =null)   ---此条件不会成立
   begin
     print 'test'
   end 
  -------null涉及的所有比较运算都会失效-------------------

  -------null子查询注意事项:
     select * from tableName where [列名] not  in
         (select [列名2] from tableNameNew)
  --如果 “[列名2] ”中 存在null,则会返回0行记录
  select * from tableName where [列名] not in ('a','b',null)
  ---会变转换为
  select * from tableName where [列名] !='a'
    and  [列名] !='b'  and [列名] !=null  
 


null注意事项:
1.NULL值同任何值进行比较运算都会返回false
2.获取某一列值为null并返回所在行数据的方法,需采用
is null
3.在实际表设计中,需避免列值为null

mssql sqlserver 将空值值转换为0的三种方法分享


摘要:
下文将通过举例的方式分享三种将空值值转换为0的方法分享
实验环境:sqlserver 2008 R2


下文将分别讲述使用sqlserver的三种函数进行空值替换:
isnull、case when 、coalesce 三种系统函数的方法处理空值,如下所示:
例:将表test中info列中的空值替换

  
 create table test(keyId int identity, info varchar(30))
   go
   insert into test(info)values('a'),('b'),(null),('d')
   go 
   ---方法1:使用isnull替换
   select keyId,isnull(info,0)  as info from test 
   go 
   ---方法2:使用case when 替换
   select keyId,case  when info is null then 0 else info  end as info  from test 
  ---方法3:使用coalesce替换相应的值
    select keyId , coalesce(info,0) as info from test 
  
   go 
   truncate table test 
   drop table test