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

หาค่าที่อยู่ในช่วง (Range) ใน MySQL ด้วย BETWEEN Operator

บทนำ

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

รูปแบบการใช้งาน

SELECT * FROM TableName WHERE ColumnName BETWEEN StartValue AND EndValue;

ตัวอย่างการสร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Start INT,
    -> End INT
    -> );
Query OK, 0 rows affected (0.91 sec)
mysql> INSERT INTO DemoTable(Start, End) VALUES(100, 200);
mysql> INSERT INTO DemoTable(Start, End) VALUES(400, 500);
mysql> INSERT INTO DemoTable(Start, End) VALUES(210, 350);

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์

+----+-------+------+
| Id | Start | End  |
+----+-------+------+
| 1  | 100   | 200  |
| 2  | 400   | 500  |
| 3  | 210   | 350  |
+----+-------+------+
3 rows in set (0.00 sec)

คำสั่งหาแถวที่มีช่วงครอบคลุมค่า 432

mysql> SELECT * FROM DemoTable WHERE 432 BETWEEN Start AND End;

ผลลัพธ์

+----+-------+------+
| Id | Start | End  |
+----+-------+------+
| 2  | 400   | 500  |
+----+-------+------+
1 row in set (0.04 sec)

คำอธิบาย

  • ค่า 432 อยู่ในช่วง 400-500 (แถวที่ 2) ✅
  • ค่า 432 ไม่อยู่ในช่วง 100-200 (แถวที่ 1) ❌
  • ค่า 432 ไม่อยู่ในช่วง 210-350 (แถวที่ 3) ❌

การใช้งานกับวันที่

-- หาแถวที่วันที่อยู่ในช่วง
SELECT * FROM Events 
WHERE EventDate BETWEEN '2024-01-01' AND '2024-12-31';

-- เทียบเท่ากับ
SELECT * FROM Events 
WHERE EventDate >= '2024-01-01' AND EventDate <= '2024-12-31';

ข้อควรระวัง

  • BETWEEN รวมค่าขอบเขต (Inclusive): BETWEEN 1 AND 10 ครอบคลุม 1 ถึง 10
  • ค่า Start ต้องน้อยกว่าหรือเท่า End มิฉะนั้นจะไม่ได้ผลลัพธ์
  • ใช้กับ NULL ไม่ได้ (NULL BETWEEN ... จะเป็น NULL/False)