我有一个名为CityData的数据库表,它通过ODBC使用SAS查询。该表有一列City,其中包含Missing / Null值。 SAS中的以下数据步骤未给出预期结果 -
Data New;
set CityData;
where pop> 10000 and City not in ('Mumbai')
run;
上面的代码从输出数据集中排除了Null值。但是,以下代码按预期工作
Data New;
set CityData;
where pop > 10000 and (City not in ('Mumbai') or City is Null);
run;
为什么呢?我使用的是Windows SAS版本9.4。
答案 0 :(得分:1)
这是由于DBMS评估空值的方式。 libname引擎通过隐式传递发送您的where
语句,并且评估为:
where pop> 10000 and City ne 'Mumbai'
null <> 'Mumbai'
= null,因此没有返回。
您还缺少where语句中的分号。
Data New;
set CityData;
where pop> 10000 and City not in ('Mumbai');
run;