Operatoren
Aus SAS-Wiki
Operatoren in SAS sind mathematische Operatoren, die in der SAS-Sprache Verwendung finden. SAS kennt arithmetische Operatoren, Vergleichsoperatoren und logische Operatoren.
Prioritäten
Die Operatoren in SAS sind entsprechend ihrer Priorität in sieben Gruppen eingeteilt. Dabei gilt:
- Zuerst werden die Operatoren der Gruppe I ausgeführt, dann die von Gruppe II usw., bis am Ende die Operatoren der Gruppe VII ausgeführt werden. Treten dabei mehrere Operatoren einer Gruppe zusammen auf, wird stets derjenige Operator zuerst ausgeführt, der am weitesten links steht. Einzige Ausnahme hiervon ist die Gruppe I, deren Operatoren von rechts nach links ausgeführt werden. In den Prioritätenregeln enthalten sind die mathematischen Regeln, dass Potenzrechnung vor „Punktrechnung“ („*“, „/“) und diese wiederum vor „Strichrechnung“ („+“, „-“) geht und dass NOT vor AND vor OR gilt. Durch Klammersetzung sind beliebige Abweichungen von diesen vorgegebenen Prioritäten möglich.
Hier eine Tabelle mit den Prioritätengruppen:
| Priorität | Reihenfolge | Symbol | Mnemonic | Bedeutung | Beispiel |
|---|---|---|---|---|---|
| I | rechts nach links | ** | Potenzierung | 2**2**3 entspricht (2**(2**3))=256 | |
| + - | Vorzeichen | ||||
| ^ ~ | NOT | Logisches Nicht | NOT a AND b entspricht (NOT a) AND b | ||
| >< | MIN | Minimum | 5><1 =>1 | ||
| <> | MAX | Maximum | 5<>1 =>5 | ||
| Vorsicht: Im Zusammenhang mit WHERE bedeutet <> ungleich und >< ist nicht definiert! | |||||
| II | links nach rechts | * | Multiplikation | 2*3*4 entspricht (2*3)*4=6*4=24 | |
| / | Division | 24/3/2 entspricht (24/3)/2=8/2=4 | |||
| III | links nach rechts | + | Addition | 2+3+4 entspricht (2+3)+4=5+4=9 | |
| - | Subtraktion | 6-3-4 entspricht (6-3)-4=3-4=-1 | |||
| IV | links nach rechts | !! || | Verknüpfung von Zeichenketten | SUBSTR(vorname,1,1)||". "||nachname | |
| V | links nach rechts | < | LT | kleiner als | x < 100 |
| <= | LE | kleiner oder gleich | x <= 100 | ||
| = | EQ | gleich | x = . | ||
| ^= ~= | NE | ungleich | x ^= 0 | ||
| >= | GE | größer oder gleich | name >= "Anton" | ||
| > | GT | größer | zeit > "01jan2000:12:15"DT | ||
| IN | gleich einem Element der Liste (logisches Oder) | hausnr IN (10 12 14) | |||
| VI | links nach rechts | & | AND | Logisches Und | a=b AND c=d |
| VII | links nach rechts | ! | OR | Logisches Oder | a=b OR c=d |
Anmerkung zu V: Nach jedem Vergleichsoperator kann beim Vergleich von Zeichenketten der Doppelpunkt ':' als „Beginnt-mit“-Operator verwendet werden. Damit bezieht sich der Vergleich nur auf die ersten Zeichen. Zum Beispiel
| „Beginnt-mit“-Operator | |
|---|---|
| name=:"A" | beginnt mit "A" äquivalent zu SUBSTR(name,1,1)="A" |
| name^=:"Mei" | beginnt nicht mit "Mei" äquivalent zu SUBSTR(name,1,3)^="Mei" |
| name>=:"M" | beginnt mit "M" oder einem Buchstaben danach äquivalent zu SUBSTR(name,1,1)>="M" |
| name in: ("A" "B") | beginnt mit "A" oder "B" äquivalent zu SUBSTR(name,1,1)="A" OR SUBSTR(name,1,1)="B" |
Beispiele
3*x**2 + 8 entspricht (3*(x**2)) + 8 und ergibt 20 für x=2
12/2*3 entspricht (12 / 2) * 3 = 6 * 3 = 18
NOT a=b AND c=d entspricht ((NOT a) = b) AND (c = d);
x>100 OR land="D" AND datum=TODAY() entspricht (x > 100) OR ((land = "D") AND (datum = TODAY()))
wert > 3*x**2 + 8 AND a=b entspricht (wert > ((3*(x**2)) + 8)) AND (a=b)
-5><-3 entspricht -(5><-3)=-(-3)=3
Weblinks
- SAS Operators in Expressions bei support.sas.com (englisch)

