为什么在数据库里NULL=NULL 不成立

learn_forever 2007-09-27 01:55:32
有两个表a,b,a.字段1=b.字段1,a.字段2=NULL,b.字段2=NULL
现在做个查询
Select a.*,b.* from a join b on
(a.字段1=b.字段1)and(a.字段2=b.字段2)
但是查询是结果却为空
请问两个字段都为空的话不存在相等增关系呢
...全文
249 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzinfo 2007-10-06
  • 打赏
  • 举报
回复
任意的两个NULL值是都不相等的..

判断某值是否为NULL,只能通过is[not] NULL 运算符来进行哦.

除了IS[NOT]NULL外,空值不满足任何查找条件。

如果NULL参与算术运算,则该算术表达式的值为NULL,如果NULL参与比较运算,则结果可视为False
huangxw000 2007-10-05
  • 打赏
  • 举报
回复
NULL是已经定义的常量,没法在给常量赋值。
qufo 2007-10-04
  • 打赏
  • 举报
回复
null 不参与任何比较运算。
gccr 2007-09-29
  • 打赏
  • 举报
回复
NULL不能用“=”,要用IS 或者 NOT IS 来判断。
NULL IS NULL 返回的是True。
骑牛上铂金 2007-09-28
  • 打赏
  • 举报
回复
SQL真是很精妙!
waxfeng 2007-09-28
  • 打赏
  • 举报
回复
null值是不确定的,比如说无穷大,无穷小,你能说两个无穷大相等吗?所以NULL不能等于null
liangpei2008 2007-09-28
  • 打赏
  • 举报
回复
ISNULL
hongqi162 2007-09-27
  • 打赏
  • 举报
回复
唉!~~~



你还是慢慢的了解sql吧,isnull是一个函数,判断字段is null 后返回一个指定的值,你返回的是一个空格你也可以返回任意值例如ISNULL(a.字段2, 'aaa')或ISNULL(a.字段2, 100)
learn_forever 2007-09-27
  • 打赏
  • 举报
回复
查到了,原来空字段不能用于连接的 可用ISNULL(a.字段2,'')=ISNULL(b.字段2,'')这样就可以连接了
hongqi162 2007-09-27
  • 打赏
  • 举报
回复
null 不能用等号进行判断,只能用 is null 或者 is not null进行判断,你把你的要求按照这个写就可以了



不知道你要的是不是这样的
(a.字段1=b.字段1)and(a.字段2 is null and b.字段2 is null)


learn_forever 2007-09-27
  • 打赏
  • 举报
回复
我是說a.字段2和b.字段2的值都为空的(NULL),
不是要查询字段2.值 is NULL
hongqi162 2007-09-27
  • 打赏
  • 举报
回复
字段2=NULL

字段2 is NULL

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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