我刚刚开始了一项新工作,我正在学习sas,并对<>提出了疑问。运营商。从我的阅读来看,这并不等于“不等于”,而是一种MAX函数。
然而,在我新地方的一个程序中,他们使用它作为不等于两个文本值之间的程序,例如'当前' <> “当前”,包含在IF中。它是否正确?它的文字是否有所不同?
答案 0 :(得分:4)
作为SQL语法支持的一部分,SAS必须调整以允许<>
在SQL代码中表示不相等。当他们在几乎所有情况下扩展WHERE
语句时,他们使用了他们用于SQL实现的库。所以在PROC中SQL代码和WHERE语句<>
意味着不相等。但在数据步骤代码中它仍然意味着MAX。
因此,如果在<>
语句中使用IF
,则请求MAX运算符而不是NOT EQUALS运算符。
57 data _null_;
58 str='Hi';
59 if str <> 'Hi' then put 'TRUE'; else put 'FALSE';
NOTE: The "<>" operator is interpreted as "MAX".
60 run;
NOTE: Character values have been converted to numeric values at the places given by:
(Line):(Column).
59:10
NOTE: Invalid numeric data, 'Hi' , at line 59 column 10.
FALSE
str=Hi _ERROR_=1 _N_=1