В рамках поддержки синтаксиса 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