Operatorprioritet (entitets-SQL)
När en entitets-SQL-fråga har flera operatorer avgör operatorprioriteten i vilken ordning åtgärderna utförs. Körningsordningen kan påverka frågeresultatet avsevärt.
Operatorerna har de prioritetsnivåer som visas i följande tabell. En operator med en högre nivå utvärderas före en operator med en lägre nivå.
Nivå | Åtgärdstyp | Operator |
---|---|---|
1 | Primär | . , [] () |
2 | Unär | ! not |
3 | Multiplicative | * / % |
4 | Tillsats | + - |
5 | Ordna profiler | < > <= >= |
6 | Tillämplig | = != <> |
7 | Villkorsstyrd OCH | and && |
8 | Villkorsstyrd ELLER | or || |
När två operatorer i ett uttryck har samma operatorprioretsnivå utvärderas de från vänster till höger baserat på deras position i frågan. Till exempel x+y-z
utvärderas som (x+y)-z
.
Du kan använda parenteser för att åsidosätta operatorernas definierade prioritet i en fråga. Allt inom parenteser utvärderas först för att ge ett enda resultat innan det resultatet kan användas av alla operatorer utanför parenteserna. Multiplicerar till exempel x+y*z
med och lägger sedan till x
, men (x+y)*z
lägger x
till y
i och multiplicerar sedan resultatet z
med .y
z