- 実行する
SELECT -100/-100*10
と結果はになり0
ます。 - 実行する
SELECT (-100/-100)*10
と結果はになり10
ます。 - 実行する
SELECT -100/(-100*10)
と結果はになり0
ます。 - 実行する
SELECT 100/100*10
と結果はになり10
ます。
BOLの状態:
式内の2つの演算子の優先順位が同じ場合、それらは式内での位置に基づいて左から右に評価されます。
そして
Level Operators
1 ~ (Bitwise NOT)
2 * (Multiplication), / (Division), % (Modulus)
3 + (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
BOLは間違っていますか、それとも何か不足していますか?そうです-
(予想される)の優先順位をオフに投げています。
SELECT -100/(-100)*10
また、10を返します。これは、計算後にのみ適用される演算子-
として扱われるように見えます-
100*10
A / -B * C
ですA <div> <negate> B <multiply> C
。ドキュメントごとに、Negateは乗算よりも優先順位が低いため、結果はになりA / -(B * C)
ます。浮動定数を使用することでこれをより明確に見ることができます:vs . 12e / -13e * 14e
vs. これが私たちを捨てる理由は、通常、単項マイナスがリテラルの一部になるか、少なくとも非常に優先順位が高いと予想されるためですが、それはT-SQLではありません動作します。12e / (-13e) * 14e
12e / 13e * 14e