Delen via


Prioriteit van operator (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Wanneer een complexe expressie meerdere operators bevat, bepaalt de operatorprioriteit de reeks bewerkingen. De volgorde van de uitvoering kan de resulterende waarde aanzienlijk beïnvloeden.

Operators hebben de prioriteitsniveaus die worden weergegeven in de volgende tabel. Een operator op een hoger niveau wordt geëvalueerd vóór een operator op een lager niveau. In de volgende tabel is 1 het hoogste niveau en 8 het laagste niveau.

Level Operators
1 ~ (bitwise NOT)
2 * (vermenigvuldiging), / (delen), % (modulus)
3 +(positief), (negatief), +- (optellen), + (samenvoeging), - (aftrekken), & (bitwiseAND), (bitwise exclusief), ^| (bitwise), OR(bitsgewijze OR<< linker shift), >> (bitsgewijze rechter shift)
4 =, , <>, >=, , <=, <>, !=, , !>( !< vergelijkingsoperatoren)
5 NOT
6 AND
7 ALL, , ANYBETWEEN, IN, , LIKE, , ORSOME
8 = (toewijzing)
Level Operators
1 ~ (bitwise NOT)
2 * (vermenigvuldiging), / (delen), % (modulus)
3 +(positief), (negatief), - (optellen), + (samenvoeging), - (aftrekken), & (bitwiseAND), (bitwise exclusieve), |^ (bitwiseOR)OR+
4 =, , <>, >=, , <=, <>, !=, , !>( !< vergelijkingsoperatoren)
5 NOT
6 AND
7 ALL, , ANYBETWEEN, IN, , LIKE, , ORSOME
8 = (toewijzing)

Wanneer twee operators in een expressie hetzelfde prioriteitsniveau hebben, vindt de evaluatie plaats van links naar rechts op basis van hun positie in de expressie. In de expressie die in de volgende SET instructie wordt gebruikt, wordt de aftrekkingsoperator bijvoorbeeld geëvalueerd vóór de operator voor optellen.

DECLARE @MyNumber AS INT;
SET @MyNumber = 4 - 2 + 27;

-- Evaluates to 2 + 27 which yields an expression result of 29.
SELECT @MyNumber;

Gebruik haakjes om de gedefinieerde prioriteit van de operators in een expressie te overschrijven. Alles tussen haakjes wordt geëvalueerd om één waarde te opleveren. Elke operator buiten deze haakjes kan die waarde gebruiken.

In de expressie die in de volgende SET instructie wordt gebruikt, heeft de vermenigvuldigingsoperator bijvoorbeeld een hogere prioriteit dan de operator voor optellen. De vermenigvuldigingsbewerking wordt eerst geëvalueerd. Het resultaat van de expressie is 13.

DECLARE @MyNumber AS INT;
SET @MyNumber = 2 * 4 + 5;

-- Evaluates to 8 + 5 which yields an expression result of 13.
SELECT @MyNumber;

In de expressie die in de volgende SET instructie wordt gebruikt, zorgen de haakjes ervoor dat de toevoeging eerst wordt geëvalueerd. Het resultaat van de expressie is 18.

DECLARE @MyNumber AS INT;
SET @MyNumber = 2 * (4 + 5);

-- Evaluates to 2 * 9 which yields an expression result of 18.
SELECT @MyNumber;

Als een expressie geneste haakjes bevat, wordt eerst de diep geneste expressie geëvalueerd. Het volgende voorbeeld bevat geneste haakjes, met de expressie 5 - 3 in de diep genestste set haakjes. Deze expressie geeft een waarde van 2. Vervolgens voegt de optellingsoperator (+) dit resultaat toe aan 4, wat een waarde oplevert van 6. Ten slotte wordt het 6 vermenigvuldigd met 2 het resultaat van een expressie van 12.

DECLARE @MyNumber AS 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;