在带有文本的 sas 中使用 <> 运算符表示不等于

Bar*_*rry 3 sas

我刚刚开始一份新工作,正在学习 sas,并且有一个关于 <> 运算符的问题。根据我的阅读,这并不等于“不等于”,而是一种 MAX 函数。

然而,在我的新地方的一个程序中,他们将其用作两个文本值之间的不等于,例如 'current'<> 'current',包含在 IF 中。它是否正确?它的文字有什么不同吗?

Tom*_*Tom 5

作为 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
Run Code Online (Sandbox Code Playgroud)