- หากคุณดำเนินการผลที่ได้คือ
SELECT -100/-100*10
0
- หากคุณดำเนินการผลที่ได้คือ
SELECT (-100/-100)*10
10
- หากคุณดำเนินการผลที่ได้คือ
SELECT -100/(-100*10)
0
- หากคุณดำเนินการผลที่ได้คือ
SELECT 100/100*10
10
สถานะBOL :
เมื่อตัวดำเนินการสองตัวในนิพจน์มีระดับความสำคัญของตัวดำเนินการเหมือนกันระบบจะประเมินจากซ้ายไปขวาตามตำแหน่งในนิพจน์
และ
Level Operators
1 ~ (Bitwise NOT)
2 * (Multiplication), / (Division), % (Modulus)
3 + (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
BOL ผิดหรือฉันพลาดอะไรไป? ดูเหมือนว่า-
กำลังทำให้ความสำคัญ (ที่คาดหวัง) ออกไป
-
ดูเหมือนจะทำให้กระแส "ผิด" ถ้าคุณพยายามที่คุณจะได้รับผลที่ตามมา-100/(-100)*10
10
ดูเหมือนว่า/
กำลังถูกนำไปใช้กับค่า-
ในสมการและจากนั้นสมการ100*10
จะถูกกำหนด ฉันไม่แน่ใจว่านี่เป็นข้อผิดพลาดของ BOL แต่มีมากกว่านั้นที่ SQL Server ไม่ทำงานตามที่คาดไว้ อาจเป็นเรื่องที่ควรค่าแก่การแจ้งปัญหาเกี่ยวกับsql-docsและดูว่ามีการตอบสนองอย่างไร บางทีอาจมีการเพิ่มหมายเหตุลงในเอกสารคำแนะนำของ "คุณลักษณะ"
SELECT -100/(-100)*10
ยังส่งกลับ 10 ดูเหมือนว่า-
จะถือว่าเป็นตัว-
ดำเนินการซึ่งควรใช้หลังจาก100*10
คำนวณแล้วเท่านั้น
A / -B * C
คือA <div> <negate> B <multiply> C
. A / -(B * C)
ลบล้างมีความสำคัญต่ำกว่าคูณต่อเอกสารดังนั้นผลที่ได้คือ คุณสามารถดูนี้ชัดเจนมากขึ้นโดยใช้ค่าคงลอย: 12e / -13e * 14e
เทียบกับ12e / (-13e) * 14e
เทียบกับ12e / 13e * 14e
เหตุผลได้โดยเริ่มต้นนี้เราพ่นออกเป็นเพราะเรามักคาดหวังลบเอกที่จะกลายเป็นส่วนหนึ่งของตัวอักษรหรืออย่างน้อยมีความสำคัญสูงมาก แต่นั่นไม่ใช่วิธี T-SQL ได้ผล