SqlServer2005 查询 第六讲 null

今天们来讲sql命令中的这个null参数

null

  • null: 可以理解成【没有值,空值】的意思

注意以下几点

  • --1、零和null是不一样的,null表示空值,而零表示的一个确定的值
    --2、null不能参与的运算 <> , != , =
    --3.null可以参与的运算符是is ,not is

例如

  • 这里所有的操作都是在scott(库)中的emp表做演示
    comm 表示的是emp表中的这个奖金字段。
select * from emp where commm <> null;    //-- 错误
select * from emp where comm != null;   //--错误
select * from emp where comm  = null;    //-- 错误
select * from emp where comm is null;    //--正确,表示的是输出奖金为空的员工的信息
select * from emp where comm not is null; //-- 正确,表示的是输出奖金不为空的员工的信息
  • 4.任何数据类型都允许为null
    eg:
create table test(name nvarchar(20),
                   cnt int,
                   ridi datetime)

insert into test values(null,null,null)   //这些都是成立的,所以任何类型都允许为空。
                                          //这些比较好理解的东西,我就不用图片进行展示了
  • 5、任何数字与null参与数学运算结果永远是null
    eg:
    请输出每个员工的年薪【这里的年薪的算法等于sal(月薪)*12+comm(奖金)】
    注意我们的emp表中comm(奖金)这一个字段的值有null(空值)
                           // --我们先来演示一个错误的sql命令的写法
select comm,sal*12+comm “年新” from emp
                           //-- 这时我们会发现comm为null的字段,年薪这个计算列的字段就会为null(空值)
                           //-- 所以任何数字与null参与数学运算结果永远是null
                         

下面这个图片是上面这条sql命令所执行的结果

那么这个题的sql命令应该怎么写呢

 select comm,sal*12+isnull(comm,0) "年薪" from emp  
             // -- isnull(comm,0)表示的是如果comm是null,就返回零否者返回comm的值。


下面这个图片是上面这条sql命令所执行的结果

从图中可以看见不管comm(奖金)这个字段的值是否为空,这个计算列的年薪字段都有值
今天这一讲就到这里,下一讲我们来说 order by
如果还有什么不懂的,可以加我qq485536603

原文地址:https://www.cnblogs.com/zjlk/p/11877180.html