Aracılığıyla paylaş


İşleç önceliği (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Karmaşık bir ifade birden çok işleç içerdiğinde, işleç önceliği işlemlerin sırasını belirler. Yürütme sırası, sonuçta elde edilen değeri önemli ölçüde etkileyebilir.

İşleçler aşağıdaki tabloda gösterilen öncelik düzeylerine sahiptir. Daha yüksek düzeydeki bir işleç, daha düşük düzeydeki bir işleç öncesinde değerlendirilir. Aşağıdaki tabloda 1 en yüksek düzey, 8 ise en düşük düzeydir.

Level Operators
1 ~ (bit düzeyinde NOT)
2 * (çarpma), / (bölme), % (modül)
3 +(pozitif), - (negatif), + (toplama), + (birleştirme), - (çıkarma), (bit düzeyinde ), ^& (bit düzeyinde ANDhariç OR), (bit düzeyinde), <<| (bit düzeyinde ORsol kaydırma), >> (bit düzeyinde sağ kaydırma)
4 =, >, <, >=, , <=, <>, !=, , !>( !< karşılaştırma işleçleri)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, , IN, LIKE, OR, SOME
8 = (atama)
Level Operators
1 ~ (bit düzeyinde NOT)
2 * (çarpma), / (bölme), % (modül)
3 +(pozitif), - (negatif), + (toplama), + (birleştirme), - (çıkarma), (bit düzeyinde ), &^ (bit düzeyinde ANDözelOR), | (bit düzeyinde OR)
4 =, >, <, >=, , <=, <>, !=, , !>( !< karşılaştırma işleçleri)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, , IN, LIKE, OR, SOME
8 = (atama)

İfadedeki iki işleç aynı öncelik düzeyine sahip olduğunda, ifadedeki konumlarına bağlı olarak değerlendirme soldan sağa gerçekleşir. Örneğin, aşağıdaki SET deyimde kullanılan ifadede çıkarma işleci toplama işlecinden önce değerlendirilir.

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

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

İfadedeki işleçlerin tanımlı önceliğini geçersiz kılmak için parantezleri kullanın. Parantez içindeki her şey tek bir değer vermek üzere değerlendirilir. Bu parantezlerin dışındaki tüm işleçler bu değeri kullanabilir.

Örneğin, aşağıdaki SET deyimde kullanılan ifadede çarpma işleci toplama işlecinden daha yüksek önceliğe sahiptir. Çarpma işlemi önce değerlendirilir. İfade sonucu şeklindedir 13.

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

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

Aşağıdaki SET deyimde kullanılan ifadede, parantezler önce toplamanın değerlendirilmesine neden olur. İfade sonucu şeklindedir 18.

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

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

bir ifade iç içe parantezlere sahipse, önce en derin iç içe ifade değerlendirilir. Aşağıdaki örnek, ifadesi 5 - 3 en derin iç içe parantez kümesinde olan iç içe parantezler içerir. Bu ifade değerini 2verir. Ardından toplama işleci (+) bu sonucu 4değerine ekler ve değerini verir 6. Son olarak, 6 ifadesinin sonucunu 2vermek için ile çarpılır12.

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;