我的表格具有以下列和行
Country campaign events events
DE RTEST [FB] ACQ Buyer - NDPA - Marketplace (REV - Retention - $15 - July) v1 10000
HK another campaign 20000
_null_ no campaign 30000
现在,如果我运行以下查询
从表WHERE mkt_campaign中选择COUNT(*)!='RTEST [FB] ACQ买方-NDPA-市场(REV-保留-$ 15-7月)v1'
我应该得到50000作为输出,但是只有20000。
问题 1.我的过滤条件是否正确,或者那些花括号是任何元字符或转义序列等? 2.为什么在计数聚合中不考虑空行?
预先感谢
答案 0 :(得分:2)
这些NULL处理行为由ANSI SQL标准定义。
您的“不等于” !=
过滤器隐式排除了空值,因为它们无法比较。您需要添加OR mkt_campaign IS NULL
才能包含它们。
还要注意,聚合函数(排除 COUNT(*)
)会删除NULL值http://www.sqlservercentral.com/articles/Advanced+Querying/gotchasqlaggregatefunctionsandnull/1947/