按照这个,它非常明显而且简单。出于某种原因,结果在数据子集上的查询和接近角度之间不同。请记住,该字段correct_addr
是一个带有允许空值的char(1)
字段。Informix SQL - 简单选择查询返回意外结果
select distinct correct_addr, count(*) from id_rec group by correct_addr;
correct_addr (count(*))
2477
N 80
Y 84013
3 row(s) retrieved.
好了,correct_addr
包含3倍不同的值: “N”, “Y” 和 “” 或 “” 或NULL
所以,现在,我试试这个:
select count(*) from id_rec where correct_addr <> 'N';
(count(*))
84013
有那个空白值的2477记录发生了什么?
另一个从不同的角度尝试:
select count(*) from id_rec where correct_addr in (null,'',' ','Y');
(count(*))
84013
同样的事情发生....
那么,什么是怎么回事?为什么sql引擎(?)不能识别最后2个sql语句中的空白值?它在分组的第一个查询中发现它很好,但没有其他地方。
有没有人有任何想法,为什么会发生这种类型的事情?
感谢...我不知道'correct_addr是null'和'(null)'中的'correct_addr'被区别对待 – CheeseConQueso