- Eğer yürütürseniz
SELECT -100/-100*10sonuç olur0. - Eğer yürütürseniz
SELECT (-100/-100)*10sonuç olur10. - Eğer yürütürseniz
SELECT -100/(-100*10)sonuç olur0. - Eğer yürütürseniz
SELECT 100/100*10sonuç olur10.
BOL belirtir:
Bir ifadedeki iki operatör aynı operatör öncelik düzeyine sahip olduğunda, ifadedeki konumlarına göre soldan sağa değerlendirilirler.
Ve
Level Operators
1 ~ (Bitwise NOT)
2 * (Multiplication), / (Division), % (Modulus)
3 + (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
BOL yanlış mı yoksa bir şey mi kaçırıyorum? Görünüşe göre -(beklenen) önceliği atıyor.
-akışın "yanlış" gitmesine neden oluyor gibi görünüyor. Eğer denersen -100/(-100)*10sonucu alırsın 10. görülüyor ki /değerine karşı uygulandığı -denklemde ve daha sonra denklem 100*10belirlenmektedir. Bunun BOL ile ilgili bir hata olduğundan emin değilim, ancak daha çok SQL Server beklendiği gibi davranmıyor. Sql-docs hakkında bir konu gündeme getirmeye ve yanıtlarının orada ne olduğunu görmeye değer olabilir ; belki belgelere "özellik" hakkında bilgi veren bir not eklenebilir.
SELECT -100/(-100)*10ayrıca 10 -değerini döndürür. Görünüşe göre , -yalnızca 100*10hesaplandıktan sonra uygulanması gereken operatör olarak kabul edilir
A / -B * Colduğunu A <div> <negate> B <multiply> C. Negate, dokümanlara göre çarpmadan daha düşük önceliğe sahiptir, dolayısıyla sonuç olur A / -(B * C). Kayan sabitleri kullanarak bunu daha açık bir şekilde görebilirsiniz: 12e / -13e * 14evs 12e / (-13e) * 14evs 12e / 13e * 14eBunun bizi atmasının nedeni, genellikle tekli eksi değerinin değişmezin bir parçası olmasını beklememiz veya en azından çok yüksek önceliğe sahip olmasıdır, ancak T-SQL böyle değildir İşler.