sql 条件用空值进行比对的结果

select SUM(e.Qty) as InputQty
from UT_InputInfo as a 
inner join T_ProcessDef as b 
on a.ProcessID=b.ProcessID
inner join UT_PrdTask as d 
on a.OrderID=d.OrderID
inner join dbo.UT_LabelInfoRec as e 
on a.LabelPrtRecID=e.PrtRecID
inner join UT_PrdTask as h
on e.OrderID=h.OrderID
and a.OrderID=@OrderID and e.BIN=@BIN and a.EqNo=@EqNo AND a.SpecialType=@SpecialType 
and e.EntryEqNo <> @EqNo --投入数去除同机台打印出来的标签
--EntryEqNo为null的时候会让查询结果为空

image

使用 NULL 值进行比较时,因为 NULL 在 SQL 中表示未知值,因此任何与 NULL 进行的比较都会返回 UNKNOWN,而不是 TRUE 或 FALSE

如果 EntryEqNo 是 NULL 时,比较操作会返回 UNKNOWN,因此不会返回记录。
and e.EntryEqNo <> @EqNo改成AND COALESCE(e.EntryEqNo, '') <> @EqNo;
将NULL 值转换为空字符串就能避免这个情况了

posted @ 2024-06-06 18:07  咸鱼过海  阅读(23)  评论(0编辑  收藏  举报