Operatoren

Aus SAS-Wiki
Wechseln zu: Navigation, Suche

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