Clause BETWEEN คืออะไร?
ในบทความก่อนหน้า เราได้เรียนรู้เกี่ยวกับ IN Clause ที่ใช้ตรวจสอบว่าค่าในคอลัมน์ตรงกับค่าใดค่าหนึ่งในชุดข้อมูลที่กำหนดหรือไม่ ในบทความนี้ เราจะมาเรียนรู้เกี่ยวกับ BETWEEN Clause ซึ่งเป็นอีกหนึ่งเครื่องมือที่มีประโยชน์ในการกรองข้อมูล โดยใช้ตรวจสอบว่าค่าในคอลัมน์อยู่ในช่วงที่กำหนดหรือไม่
BETWEEN value1 AND value2
BETWEEN Clause ใช้เพื่อเลือกข้อมูลที่มีค่าอยู่ในช่วงที่กำหนด โดยมีรูปแบบการใช้งานดังนี้:
SELECT column1, column2, ...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
โดยที่:
column1, column2, ...คือ คอลัมน์ที่คุณต้องการเลือกtable_nameคือ ชื่อตารางที่คุณต้องการดึงข้อมูลcolumn_nameคือ คอลัมน์ที่คุณต้องการตรวจสอบค่าvalue1คือ ค่าเริ่มต้นของช่วงvalue2คือ ค่าสิ้นสุดของช่วง
BETWEEN Clause จะทำการเลือกข้อมูลที่ค่าใน column_name มากกว่าหรือเท่ากับ value1 และน้อยกว่าหรือเท่ากับ value2 นั่นคือ รวมค่าขอบเขต ทั้ง value1 และ value2 ด้วย
การเปรียบเทียบช่วงของข้อมูล
ลองพิจารณาตาราง products ที่เก็บข้อมูลเกี่ยวกับสินค้า:
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
INSERT INTO products (product_name, price) VALUES
('Laptop', 1200.00),
('Mouse', 25.00),
('Keyboard', 75.00),
('Monitor', 300.00),
('Headphones', 150.00),
('Webcam', 50.00);
หากเราต้องการเลือกสินค้าที่มีราคาอยู่ระหว่าง 50 ถึง 300 บาท เราสามารถใช้ BETWEEN Clause ได้ดังนี้:
SELECT product_name, price
FROM products
WHERE price BETWEEN 50 AND 300;
ผลลัพธ์ที่ได้คือ:
+------------+-------+
| product_name | price |
+------------+-------+
| Monitor | 300.00|
| Headphones | 150.00|
| Webcam | 50.00|
| Keyboard | 75.00|
+------------+-------+
จะเห็นได้ว่า BETWEEN Clause เลือกสินค้าที่มีราคาตั้งแต่ 50 ถึง 300 บาท รวมถึงสินค้าที่มีราคา 50 บาท และ 300 บาทด้วย
การใช้ NOT BETWEEN
เช่นเดียวกับ IN Clause เราสามารถใช้ NOT BETWEEN เพื่อเลือกข้อมูลที่ไม่อยู่ในช่วงที่กำหนดได้
SELECT product_name, price
FROM products
WHERE price NOT BETWEEN 50 AND 300;
ผลลัพธ์ที่ได้คือ:
+--------------+-------+
| product_name | price |
+--------------+-------+
| Laptop | 1200.00|
| Mouse | 25.00|
+--------------+-------+
จะเห็นได้ว่า NOT BETWEEN Clause เลือกสินค้าที่มีราคาต่ำกว่า 50 บาท หรือสูงกว่า 300 บาท
การใช้งานกับวันที่
BETWEEN Clause ไม่ได้จำกัดอยู่แค่การเปรียบเทียบตัวเลขเท่านั้น เรายังสามารถใช้กับข้อมูลประเภทวันที่ได้อีกด้วย ลองพิจารณาตาราง orders ที่เก็บข้อมูลเกี่ยวกับการสั่งซื้อ:
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_date DATE NOT NULL,
customer_name VARCHAR(255) NOT NULL
);
INSERT INTO orders (order_date, customer_name) VALUES
('2023-01-15', 'Alice'),
('2023-02-20', 'Bob'),
('2023-03-10', 'Charlie'),
('2023-04-05', 'David'),
('2023-05-01', 'Eve');
หากเราต้องการเลือกรายการสั่งซื้อที่เกิดขึ้นระหว่างวันที่ 1 มีนาคม 2023 ถึง 30 เมษายน 2023 เราสามารถใช้ BETWEEN Clause ได้ดังนี้:
SELECT order_id, order_date, customer_name
FROM orders
WHERE order_date BETWEEN '2023-03-01' AND '2023-04-30';
ผลลัพธ์ที่ได้คือ:
+----------+------------+---------------+
| order_id | order_date | customer_name |
+----------+------------+---------------+
| 3 | 2023-03-10 | Charlie |
| 4 | 2023-04-05 | David |
+----------+------------+---------------+
จะเห็นได้ว่า BETWEEN Clause เลือกรายการสั่งซื้อที่เกิดขึ้นระหว่างวันที่ 1 มีนาคม 2023 ถึง 30 เมษายน 2023 รวมถึงวันที่ 1 มีนาคม 2023 และ 30 เมษายน 2023 ด้วย
ข้อควรระวัง
- ลำดับของค่า: ตรวจสอบให้แน่ใจว่า
value1มีค่าน้อยกว่าหรือเท่ากับvalue2หากvalue1มีค่ามากกว่าvalue2MySQL จะไม่คืนค่าใดๆ (หรืออาจคืนค่าที่ไม่ถูกต้อง ขึ้นอยู่กับ version) - ประเภทข้อมูล:
value1และvalue2ควรเป็นประเภทข้อมูลเดียวกันกับคอลัมน์ที่คุณกำลังเปรียบเทียบ หากประเภทข้อมูลไม่ตรงกัน อาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด - การรวมค่าขอบเขต: อย่าลืมว่า
BETWEENClause รวมค่าขอบเขตทั้งvalue1และvalue2ด้วย หากคุณต้องการยกเว้นค่าขอบเขต คุณอาจต้องใช้เงื่อนไข>=และ<=แทน
กรณีใช้งานจริง
ลองพิจารณาสถานการณ์ที่คุณมีตาราง employees ที่เก็บข้อมูลเกี่ยวกับพนักงาน:
CREATE TABLE employees (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
employee_name VARCHAR(255) NOT NULL,
salary DECIMAL(10, 2) NOT NULL,
hire_date DATE NOT NULL
);
INSERT INTO employees (employee_name, salary, hire_date) VALUES
('Alice', 50000.00, '2022-01-15'),
('Bob', 60000.00, '2021-05-20'),
('Charlie', 70000.00, '2020-03-10'),
('David', 80000.00, '2019-04-05'),
('Eve', 90000.00, '2018-05-01');
ต่อไปนี้เป็นตัวอย่างการใช้งาน BETWEEN Clause ในสถานการณ์จริง:
- ค้นหาพนักงานที่มีเงินเดือนระหว่าง 60,000 ถึง 80,000 บาท:
SELECT employee_name, salary
FROM employees
WHERE salary BETWEEN 60000 AND 80000;
SELECT employee_name, hire_date
FROM employees
WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31';
สรุป
BETWEEN Clause เป็นเครื่องมือที่มีประโยชน์ในการกรองข้อมูลในช่วงที่กำหนด ไม่ว่าจะเป็นช่วงของตัวเลข วันที่ หรือข้อมูลประเภทอื่นๆ ช่วยให้คุณเขียนคำสั่ง SQL ได้ง่ายและกระชับยิ่งขึ้น อย่าลืมระมัดระวังเรื่องลำดับของค่า ประเภทข้อมูล และการรวมค่าขอบเขต เพื่อให้ได้ผลลัพธ์ที่ถูกต้องแม่นยำ
ในบทความถัดไป เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน COUNT() ซึ่งเป็นฟังก์ชันที่ใช้ในการนับจำนวนแถวในตาราง