成绩表
学号        课程      成绩    备注
0001      计算机    80     补考
0002      物理      90     2006年补考
0003      软件工程  70     null
0004      c语言     60     null
要求:查询出备注不包含  补考 的成绩?(select * from 成绩表 where 备注 not like '%补考%' 这样查询不出来)一般这种包含null空值的字段,使用不包含 某值  查询是通过什么方法啊?

解决方案 »

  1.   

    where isnull(备注,'') not like '%补考%'或者where 备注 not like  '%补考% ' or 备注 is null
      

  2.   


    select * from 成绩表 where charindex('补考', 备注)=0 or (备注 is null)
      

  3.   

    如果用charindex的话,可以直接写为
    select * from tb where isnull(charindex('补考', 备注),0)=0
      

  4.   

    select * from 成绩表 where isnull(备注, ' ') not like  '%补考% ' 
      

  5.   

    create table tb(学号 varchar(10),课程 varchar(20),成绩  varchar(20),备注 varchar(20))
    insert into tb values('0001',    '计算机','80',   '补考 ')
    insert into tb values('0002', '物理',  '90 ' ,   '2006年补考')
    insert into tb values('0003',   '软件工程', '70 ', null)
    insert into tb values('0004',  'c语言',   '60',  null)
    select * from tb where isnull(备注, ' ') not like  '%补考% ' /*
    学号       课程   成绩      备注            
    ---------- ----------- -------------------- 
    0002    物理       90     2006年补考
    0003    软件工程   70      NULL
    0004    c语言      60      NULL
    */
      

  6.   

    select * from 成绩表 where isnull(备注,'') not like  '%补考% '
      

  7.   

    use grade   //成绩表为grade
    go
    select * from grade where 备注 not like '补考%'
    //结果为:
    学号           课程         成绩          备注         
    ----------- ----------   -----------   ---------- 
    0002           物理         90          2006年补考
    0003           软件工程     70          null      
    0004           C语言        60          null