关于排除null空值的查询?

salecn 2007-10-24 11:16:12
成绩表
学号 课程 成绩 备注
0001 计算机 80 补考
0002 物理 90 2006年补考
0003 软件工程 70 null
0004 c语言 60 null


要求:查询出备注不包含 补考 的成绩?

(select * from 成绩表 where 备注 not like '%补考%' 这样查询不出来)

一般这种包含null空值的字段,使用不包含 某值 查询是通过什么方法啊?
...全文
479 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mugua604 2007-10-25
  • 打赏
  • 举报
回复
ISNULL
lixueming3000 2007-10-25
  • 打赏
  • 举报
回复
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
*/
pt1314917 2007-10-25
  • 打赏
  • 举报
回复
select * from 成绩表 where isnull(备注, ' ') not like  '%补考% ' 
cxmcxm 2007-10-25
  • 打赏
  • 举报
回复
用isnull函数
javavista 2007-10-25
  • 打赏
  • 举报
回复
use grade //成绩表为grade
go
select * from grade where 备注 not like '补考%'
//结果为:
学号 课程 成绩 备注
----------- ---------- ----------- ----------
0002 物理 90 2006年补考
0003 软件工程 70 null
0004 C语言 60 null
sp4 2007-10-25
  • 打赏
  • 举报
回复
select * from 成绩表 where isnull(备注,'') not like '%补考% '
renzhe02 2007-10-25
  • 打赏
  • 举报
回复
楼上正解啊
fcuandy 2007-10-24
  • 打赏
  • 举报
回复
如果用charindex的话,可以直接写为
select * from tb where isnull(charindex('补考', 备注),0)=0
vchao13 2007-10-24
  • 打赏
  • 举报
回复

select * from 成绩表 where charindex('补考', 备注)=0 or (备注 is null)
fcuandy 2007-10-24
  • 打赏
  • 举报
回复
where isnull(备注,'') not like '%补考%'

或者

where 备注 not like '%补考% ' or 备注 is null

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧