A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑丹丹1990 中级黑马   /  2013-4-8 21:13  /  1411 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑丹丹1990 于 2013-4-9 08:23 编辑

select *
from SC
where Grade =NULL(错误??)




select *
from SC
where Grade  is  NULL(正确???)

我会认为2个都正确。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

6 个回复

倒序浏览
很多语言很多时候会把空定义为不确定,所以不确定的东西不一定等于不确定。

点评

回忆起来了,谢谢!  发表于 2013-4-8 21:37
回复 使用道具 举报
Null在数据库中表示 不知道的数据,主要有3种意思:
1)知道数据存在,但不知道具体值.
2)不知道数据是否存在.
3)数据不存在.
所以,null未必就一定等于null啦,为了避免这个错误,所以就没有这种=null的语法

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
is 指的是符合一种性质
如所选修的课是空,说明课的属性是空
假如学号sno与课程号cno及成绩grade的关系是sc(sno,cno,grade)
那么这个条件应该是这么表达的cno is null

=  指的是数值上的等价
如课程的成绩是0
那么这个条件应该是这么表达 grade=0
回复 使用道具 举报
null表示不知道,如果你直接让一个字段等于null,就是表示让字段等于不知道,那还是不知道!
而下面的is null还表示了判断,所以它是做了处理的,故是正确的
回复 使用道具 举报
第一个sql语句中where后的语句意思为Grade等值null  ,null在sql中表示为不确定其值,所以Grade不一定等值于null
在第二个sql语句中where 后的语句意思为判断Grade是否属于null类型
回复 使用道具 举报
atwell 初级黑马 2013-4-12 10:05:17
7#
SQL 判断NULL 只能用is null和 not null
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马