Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Operator Precedence ใน MySQL ส่งผลต่อ Result Set อย่างไร

ลำดับความสำคัญของตัวดำเนินการ (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  |
+---------+

ขั้นตอนการคำนวณ

  1. 3 / 2 = 1.5 (Precedence สูงกว่า + และ -)
  2. 5 + 1.5 = 6.5
  3. 6.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 複雜