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

ความแตกต่างระหว่าง AND และ && ใน MySQL

AND vs && ใน MySQL: ตัวดำเนินการตรรกะ

ความแตกต่างหลัก: AND เป็นมาตรฐาน SQL (ANSI) ส่วน && เป็น syntax เฉพาะ MySQL (MySQL-specific)

นอกจากนี้ ทั้งคู่ทำงานเหมือนกันทุกประการ (Functionally identical)

ตารางความจริง (Truth Table)

ABA AND BA && B
1 (TRUE)1 (TRUE)11
1 (TRUE)0 (FALSE)00
0 (FALSE)1 (TRUE)00
0 (FALSE)0 (FALSE)00
NULL1NULLNULL
NULL000
NULLNULLNULLNULL

ตัวอย่างการใช้งาน

-- ทั้งคู่ให้ผลลัพธ์เหมือนกัน
SELECT 1 AND 1;    -- 1
SELECT 1 && 1;     -- 1

SELECT 1 AND 0;    -- 0
SELECT 1 && 0;     -- 0

SELECT NULL AND 1; -- NULL
SELECT NULL && 1;  -- NULL

SELECT -10 AND -30; -- 1 (non-zero = TRUE)
SELECT -10 && -30;  -- 1

Operator Precedence (ลำดับความสำคัญ)

&& มี precedence สูงกว่า AND:

-- เหมือนกัน
SELECT 1 AND 0 OR 1;  -- (1 AND 0) OR 1 = 1
SELECT 1 && 0 || 1;   -- (1 && 0) || 1 = 1

-- แตกต่างกันเมื่อผสมใช้
SELECT 1 AND 0 || 1;  -- 1 AND (0 || 1) = 1  (|| สูงกว่า AND)
SELECT 1 && 0 OR 1;   -- (1 && 0) OR 1 = 1   (&& สูงกว่า OR)

คำแนะนำ

  • ใช้ AND / OR - มาตรฐาน SQL, portable ข้ามฐานข้อมูล, อ่านง่าย
  • หลีกเลี่ยง && / || - MySQL only, precedence แตกต่าง, สับสน
  • ใน Application code ให้ใช้ AND/OR ตามมาตรฐาน
  • MySQL มี XOR (exclusive OR) เป็นมาตรฐาน SQL ด้วย

สรุป

ไม่มีความแตกต่างทางตรรกะ (Logic) ระหว่าง AND และ && เพียงแค่:

  1. AND = Standard SQL
  2. && = MySQL extension
  3. Precedence ต่างกัน (&& สูงกว่า AND)
แนะนำใช้ AND/OR เสมอ เพื่อความเข้ากันได้และอ่านง่าย