按照這個,它非常明顯而且簡單。出於某種原因,結果在數據子集上的查詢和接近角度之間不同。請記住,該字段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