1. บทนำ
หนึ่งในองค์ประกอบสำคัญที่ช่วยให้การประมวลผลคำสั่ง (Query) ในฐานข้อมูล MySQL มีประสิทธิภาพมากขึ้นคือ ตัวดำเนินการ BETWEEN
ซึ่งตัวดำเนินการนี้สะดวกอย่างมากเมื่อใช้ตรวจสอบว่าข้อมูลอยู่ภายในช่วงที่กำหนดหรือไม่ ไม่ว่าจะเป็นตัวเลข วันที่ หรือสตริง การใช้ BETWEEN
ทำให้การค้นหาและการกรองข้อมูลในฐานข้อมูลทำได้รวดเร็วและชัดเจน บทความนี้จะอธิบายการใช้งาน BETWEEN
ใน MySQL พร้อมตัวอย่างจริงและข้อควรระวังในการใช้งาน
2. โครงสร้างพื้นฐานของ BETWEEN
BETWEEN
คืออะไร
BETWEEN
เป็นเงื่อนไขที่ใช้ภายใน WHERE
เพื่อตรวจสอบว่าค่าของคอลัมน์อยู่ในช่วงที่กำหนดหรือไม่ โครงสร้างพื้นฐานมีดังนี้:
SELECT ชื่อคอลัมน์
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ BETWEEN ค่าเริ่มต้น AND ค่าสิ้นสุด;
เช่น หากในตารางเก็บอายุของพนักงาน เราสามารถใช้ BETWEEN
เพื่อดึงข้อมูลพนักงานที่มีอายุอยู่ในช่วงที่ต้องการได้
รูปแบบปฏิเสธ NOT BETWEEN
หากต้องการค้นหาค่าที่ไม่อยู่ในช่วง ให้ใช้ NOT BETWEEN
SELECT ชื่อคอลัมน์
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ NOT BETWEEN ค่าเริ่มต้น AND ค่าสิ้นสุด;
3. การกำหนดช่วงของตัวเลข
การใช้ BETWEEN
กับตัวเลข
BETWEEN
ใช้ได้อย่างสะดวกในการกำหนดช่วงของตัวเลข เช่น หากต้องการดึงข้อมูลพนักงานที่มีเงินเดือนอยู่ระหว่าง 50000 ถึง 100000:
SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;
ข้อมูลตัวอย่าง:
ผลลัพธ์ที่ได้:
employee_id | name | salary |
---|---|---|
2 | 鈴木 | 55000 |
3 | 高橋 | 75000 |
จากคำสั่ง SQL ข้างต้น จะเลือกเฉพาะพนักงานที่มีเงินเดือนอยู่ในช่วง 50000 ถึง 100000 เท่านั้น
ความแตกต่างเมื่อใช้ตัวดำเนินการเปรียบเทียบ
หากเขียนเงื่อนไขเดียวกันโดยใช้ตัวดำเนินการเปรียบเทียบ จะได้ดังนี้:
SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;
การใช้ BETWEEN
ทำให้โค้ดสั้นลงและอ่านง่ายขึ้น โดยเฉพาะในกรณีที่ต้องมีการกำหนดหลายช่วงพร้อมกัน

4. การกำหนดช่วงของวันที่
การใช้ BETWEEN
กับข้อมูลวันที่
BETWEEN
สามารถใช้กับข้อมูลวันที่ได้ เช่น หากต้องการดึงข้อมูลการสั่งซื้อระหว่างวันที่ 1 มกราคม 2024 ถึง 31 ธันวาคม 2024:
SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
ข้อมูลตัวอย่าง:
order_id | customer_id | order_date |
---|---|---|
1 | 101 | 2024-01-15 |
2 | 102 | 2024-05-30 |
3 | 103 | 2025-03-01 |
ผลลัพธ์ที่ได้:
order_id | customer_id | order_date |
---|---|---|
1 | 101 | 2024-01-15 |
2 | 102 | 2024-05-30 |
ดังนั้น BETWEEN
จะเลือกเฉพาะข้อมูลที่อยู่ภายในช่วงวันที่ที่กำหนด
การจัดการข้อมูลเวลาร่วมกับวันที่
หากคอลัมน์เก็บข้อมูลวันที่และเวลาพร้อมกัน เช่นชนิด DATETIME
จำเป็นต้องระบุเวลาให้ชัดเจน มิฉะนั้นผลลัพธ์อาจไม่ครอบคลุมช่วงสิ้นสุด ตัวอย่างเช่น:
WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';
5. การกำหนดช่วงของสตริง
การใช้ BETWEEN
กับข้อมูลสตริง
BETWEEN
สามารถใช้กับข้อมูลประเภทสตริงได้เช่นกัน เช่น หากต้องการค้นหาผลิตภัณฑ์ที่ชื่อขึ้นต้นอยู่ในช่วง ‘A’ ถึง ‘M’:
SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';
ข้อมูลตัวอย่าง:
product_id | product_name |
---|---|
1 | Apple |
2 | Banana |
3 | Mango |
4 | Orange |
ผลลัพธ์ที่ได้:
product_id | product_name |
---|---|
1 | Apple |
2 | Banana |
3 | Mango |
ข้อควรระวังเกี่ยวกับลำดับตัวอักษร
เมื่อใช้ BETWEEN
กับสตริง ระบบจะอ้างอิงตามลำดับอักษร (Alphabetical order) ซึ่งต้องแน่ใจว่าข้อมูลถูกจัดเรียงตามนั้น และขึ้นอยู่กับการตั้งค่าฐานข้อมูลด้วย เช่น อาจมีการแยกแยะตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ตัวอย่างเช่น 'a'
และ 'A'
อาจถือว่าไม่เหมือนกัน
6. ข้อควรระวังในการใช้ BETWEEN
การกำหนดช่วง
ควรระวังลำดับของค่าที่ใช้ใน BETWEEN
หากกำหนดค่าเริ่มต้นมากกว่าค่าสิ้นสุด อาจได้ผลลัพธ์ที่ไม่ถูกต้อง เช่น:
SELECT * FROM table_name WHERE column_name BETWEEN 100 AND 50; -- ผลลัพธ์ที่ไม่คาดคิด
นอกจากนี้ BETWEEN
จะรวมค่าทั้งสองขอบเขตด้วยเสมอ ดังนั้นควรเลือกค่าเริ่มต้นและสิ้นสุดอย่างระมัดระวัง
การใช้งาน Index และประสิทธิภาพ
BETWEEN
โดยทั่วไปมีประสิทธิภาพใกล้เคียงกับตัวดำเนินการเปรียบเทียบปกติ แต่หากมีการสร้างดัชนี (Index) ที่เหมาะสม จะช่วยให้การประมวลผลเร็วขึ้นมาก ตัวอย่างเช่น หากสร้าง Index ในคอลัมน์วันที่ คำสั่งที่ใช้ BETWEEN
สำหรับค้นหาช่วงวันที่จะเร็วขึ้น
7. ตัวอย่างการใช้งานจริง
ใช้ BETWEEN กับหลายคอลัมน์
BETWEEN
สามารถใช้กับหลายคอลัมน์ได้พร้อมกัน เช่น ต้องการค้นหาผลิตภัณฑ์ที่ราคามีค่าระหว่าง 1000–5000 และจำนวนสต็อกอยู่ระหว่าง 50–200:
SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
AND stock BETWEEN 50 AND 200;
การประยุกต์ใช้ NOT BETWEEN
การใช้ NOT BETWEEN
ช่วยค้นหาข้อมูลที่อยู่นอกช่วงที่กำหนด เช่น ต้องการหาพนักงานที่มีเงินเดือนน้อยกว่า 50000 หรือมากกว่า 100000:
SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;
ผลลัพธ์ที่ได้:
employee_id | name | salary |
---|---|---|
1 | 佐藤 | 45000 |
4 | 田中 | 120000 |
คำสั่งนี้จะดึงพนักงานที่เงินเดือนอยู่นอกช่วง 50000–100000
8. ตัวอย่างภาพประกอบของ Query
เพื่อให้เข้าใจผลลัพธ์ของ Query ได้ง่ายขึ้น การใช้แผนภาพประกอบก็เป็นวิธีที่ดี ตัวอย่างเช่น:
ช่วงราคา: [----- 1000 ---- 5000 -----]
ราคาสินค้า A: 3000 (อยู่ในช่วง)
ราคาสินค้า B: 6000 (อยู่นอกช่วง)
การใช้แผนภาพช่วยให้เข้าใจได้อย่างชัดเจนว่าข้อมูลอยู่ในช่วงที่กำหนดหรือไม่
9. สรุป
BETWEEN
เป็นตัวดำเนินการที่มีประโยชน์มากในการค้นหาข้อมูลที่อยู่ในช่วงที่กำหนด ไม่ว่าจะเป็นตัวเลข วันที่ หรือสตริง การใช้ BETWEEN
ทำให้ Query กระชับ อ่านง่าย และประสิทธิภาพดีขึ้น อย่างไรก็ตาม ควรเข้าใจข้อควรระวัง เช่น การรวมค่าขอบเขตทั้งสองด้าน และการใช้ Index เพื่อเพิ่มความเร็ว หากนำไปใช้อย่างถูกต้อง จะช่วยให้สามารถดึงข้อมูลที่ต้องการจากฐานข้อมูล MySQL ได้อย่างมีประสิทธิภาพสูงสุด
10. แหล่งอ้างอิง
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง SQL และการใช้งาน BETWEEN
สามารถศึกษาได้จากเอกสารทางการของ MySQL หรือหนังสือคู่มือที่เกี่ยวข้อง นอกจากนี้ การทดลองเขียน Query ด้วยตนเองจะช่วยให้เข้าใจหลักการทำงานได้ชัดเจนและลึกซึ้งยิ่งขึ้น