- 実行する
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 * 14evs. これが私たちを捨てる理由は、通常、単項マイナスがリテラルの一部になるか、少なくとも非常に優先順位が高いと予想されるためですが、それはT-SQLではありません動作します。12e / (-13e) * 14e12e / 13e * 14e