Bagikan melalui


Prioritas operator (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Saat ekspresi kompleks berisi beberapa operator, prioritas operator menentukan urutan operasi. Urutan eksekusi dapat secara signifikan memengaruhi nilai yang dihasilkan.

Operator memiliki tingkat prioritas yang ditunjukkan dalam tabel berikut. Operator pada tingkat yang lebih tinggi dievaluasi sebelum operator pada tingkat yang lebih rendah. Dalam tabel berikut, 1 adalah tingkat tertinggi dan 8 adalah tingkat terendah.

Level Operators
1 ~ (bitwise NOT)
2 * (perkalian), / (pembagian), % (modulus)
3 +(positif), - (negatif), + (tambahan), + (perangkaian), - (pengurangan), & (bitwise ), ^ (bitwise ANDeksklusif OR), | (bitwise OR), << (pergeseran kiri bit), >> (bitwise kanan shift)
4 =, , >, >=<, <=, <>!=, , !>, !< (operator perbandingan)
5 NOT
6 AND
7 ALL, ANYBETWEEN, IN, LIKE, OR, SOME
8 = (penugasan)
Level Operators
1 ~ (bitwise NOT)
2 * (perkalian), / (pembagian), % (modulus)
3 + (positif), - (negatif), + (tambahan), + (perangkaian), - (pengurangan), & (bitwise AND), ^ (bitwise eksklusif OR), | (bitwise OR)
4 =, , >, >=<, <=, <>!=, , !>, !< (operator perbandingan)
5 NOT
6 AND
7 ALL, ANYBETWEEN, IN, LIKE, OR, SOME
8 = (penugasan)

Ketika dua operator dalam ekspresi memiliki tingkat prioritas yang sama, evaluasi terjadi dari kiri ke kanan berdasarkan posisinya dalam ekspresi. Misalnya, dalam ekspresi yang digunakan dalam pernyataan berikut SET , operator pengurangan dievaluasi sebelum operator penambahan.

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

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

Gunakan tanda kurung untuk mengambil alih prioritas operator yang ditentukan dalam ekspresi. Segala sesuatu dalam tanda kurung dievaluasi untuk menghasilkan satu nilai. Setiap operator di luar tanda kurung tersebut dapat menggunakan nilai tersebut.

Misalnya, dalam ekspresi yang digunakan dalam pernyataan berikut SET , operator perkalian memiliki prioritas yang lebih tinggi daripada operator penambahan. Operasi perkalian dievaluasi terlebih dahulu. Hasil ekspresi adalah 13.

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

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

Dalam ekspresi yang digunakan dalam pernyataan berikut SET , tanda kurung menyebabkan penambahan dievaluasi terlebih dahulu. Hasil ekspresi adalah 18.

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

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

Jika ekspresi memiliki tanda kurung berlapis, ekspresi yang paling dalam berlapis dievaluasi terlebih dahulu. Contoh berikut berisi tanda kurung berlapis, dengan ekspresi 5 - 3 dalam kumpulan tanda kurung yang paling dalam. Ekspresi ini menghasilkan nilai 2. Kemudian, operator penambahan (+) menambahkan hasil ini ke 4, yang menghasilkan nilai 6. Akhirnya, dikalikan 6 dengan 2 untuk menghasilkan hasil ekspresi dari 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;