Dela via


Operatorpriorence (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

När ett komplext uttryck har flera operatorer avgör operatorprioriteten åtgärdssekvensen. Körningsordningen kan avsevärt påverka det resulterande värdet.

Operatorerna har de prioritetsnivåer som visas i följande tabell. En operator på högre nivåer utvärderas före en operatör på en lägre nivå. I följande tabell är 1 den högsta nivån och 8 är den lägsta nivån.

Level Operators
1 ~ (bitvis inte)
2 * (Multiplikation), / (Division), % (Modulus)
3 + (positiv), - (negativ), + (addition), + (sammanlänkning), - (subtraktion), & (bitvis OCH), ^ (bitvis exklusiv ELLER), | (Bitvis ELLER)
4 =, >, <, >=, <=, <>, !=, !>, !< (jämförelseoperatorer)
5 NOT
6 AND
7 ALLA, ALLA, MELLAN, I, SOM, ELLER, VISSA
8 = (Assignment)

När två operatorer i ett uttryck har samma prioritetsnivå utvärderas de från vänster till höger baserat på deras position i uttrycket. I uttrycket som används i följande SET -instruktion utvärderas till exempel subtraktionsoperatorn före additionsoperatorn.

DECLARE @MyNumber INT;  
SET @MyNumber = 4 - 2 + 27;  
-- Evaluates to 2 + 27 which yields an expression result of 29.  
SELECT @MyNumber;  

Använd parenteser för att åsidosätta operatorernas definierade prioritet i ett uttryck. Allt inom parenteser utvärderas för att ge ett enda värde. Det värdet kan användas av alla operatorer utanför dessa parenteser.

I uttrycket som används i följande SET instruktion har till exempel multiplikationsoperatorn högre prioritet än additionsoperatorn. Multiplikationsåtgärden utvärderas först. uttryckets resultat är 13.

DECLARE @MyNumber INT;  
SET @MyNumber = 2 * 4 + 5;  
-- Evaluates to 8 + 5 which yields an expression result of 13.  
SELECT @MyNumber;  

I uttrycket som används i följande SET instruktion gör parenteserna att tillägget utvärderas först. Uttrycksresultatet är 18.

DECLARE @MyNumber INT;  
SET @MyNumber = 2 * (4 + 5);  
-- Evaluates to 2 * 9 which yields an expression result of 18.  
SELECT @MyNumber;  

Om ett uttryck har kapslade parenteser utvärderas det mest kapslade uttrycket först. Följande exempel innehåller kapslade parenteser, med uttrycket 5 - 3 i den mest djupt kapslade uppsättningen parenteser. Det här uttrycket ger värdet 2. Sedan lägger additionsoperatorn (+) till 4 det här resultatet som ger värdet 6. Slutligen 6 multipliceras 2 med för att ge ett uttrycksresultat av 12.

DECLARE @MyNumber INT;  
SET @MyNumber = 2 * (4 + (5 - 3) );  
-- Evaluates to 2 * (4 + 2) which then evaluates to 2 * 6, and   
-- yields an expression result of 12.  
SELECT @MyNumber;  

See Also

Logiska operatorer (Transact-SQL)
Operators (Transact-SQL)
Inbyggda funktioner (Transact-SQL)