การใช้ตัวดำเนินการ BETWEEN ใน MySQL: คู่มือการเขียน SQL สำหรับช่วงตัวเลข วันที่ และสตริง

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_idnamesalary
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_idcustomer_idorder_date
11012024-01-15
21022024-05-30
31032025-03-01

ผลลัพธ์ที่ได้

order_idcustomer_idorder_date
11012024-01-15
21022024-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_idproduct_name
1Apple
2Banana
3Mango
4Orange

ผลลัพธ์ที่ได้

product_idproduct_name
1Apple
2Banana
3Mango

ข้อควรระวังเกี่ยวกับลำดับตัวอักษร

เมื่อใช้ 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_idnamesalary
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 ด้วยตนเองจะช่วยให้เข้าใจหลักการทำงานได้ชัดเจนและลึกซึ้งยิ่งขึ้น