- หากคุณดำเนินการผลที่ได้คือ
SELECT -100/-100*100 - หากคุณดำเนินการผลที่ได้คือ
SELECT (-100/-100)*1010 - หากคุณดำเนินการผลที่ได้คือ
SELECT -100/(-100*10)0 - หากคุณดำเนินการผลที่ได้คือ
SELECT 100/100*1010
สถานะ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 ได้ผล