ลำดับความสำคัญของตัวดำเนินการ (Precedence)
MySQL ประเมินตัวดำเนินการตาม Precedence สูงก่อน ตัวเดียวกัน Left-to-right
ลำดับ Precedence (สูง → ต่ำ)
INTERVAL
BINARY, COLLATE
! (unary), - (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
:=
ตัวอย่าง: 5 + 3 / 2 - 2
mysql> SELECT 5 + 3 / 2 - 2;
+---------+
| 5+3/2-2 |
+---------+
| 4.5000 |
+---------+
ขั้นตอนการคำนวณ
3 / 2= 1.5 (Precedence สูงกว่า + และ -)5 + 1.5= 6.56.5 - 2= 4.5
ใช้ Parentheses ควบคุมลำดับ
mysql> SELECT (5 + 3) / 2 - 2; -- (8)/2 - 2 = 2
mysql> SELECT 5 + 3 / (2 - 2); -- Error: Division by zero
แนวทางปฏิบัติ
- ใช้ Parentheses เสมอเมื่อไม่แน่ใจ
- ทำให้ Code อ่านง่ายและไม่ผิดพลาด
- โดยเฉพาะใน WHERE clause และ Expression 複雜