ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

Clause BETWEEN คืออะไร?

บทความนี้อธิบายการใช้งาน `BETWEEN` Clause ใน SQL เพื่อกรองข้อมูลที่อยู่ในช่วงที่กำหนด ทั้งกับข้อมูลตัวเลขและวันที่ โดย `BETWEEN` Clause จะรวมค่าขอบเขตที่กำหนดไว...

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 มีค่ามากกว่า value2 MySQL จะไม่คืนค่าใดๆ (หรืออาจคืนค่าที่ไม่ถูกต้อง ขึ้นอยู่กับ version)
  • ประเภทข้อมูล: value1 และ value2 ควรเป็นประเภทข้อมูลเดียวกันกับคอลัมน์ที่คุณกำลังเปรียบเทียบ หากประเภทข้อมูลไม่ตรงกัน อาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
  • การรวมค่าขอบเขต: อย่าลืมว่า BETWEEN Clause รวมค่าขอบเขตทั้ง 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;
        
  • ค้นหาพนักงานที่ได้รับการว่าจ้างระหว่างปี 2020 ถึง 2022:
  • SELECT employee_name, hire_date
    FROM employees
    WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31';
        

สรุป

BETWEEN Clause เป็นเครื่องมือที่มีประโยชน์ในการกรองข้อมูลในช่วงที่กำหนด ไม่ว่าจะเป็นช่วงของตัวเลข วันที่ หรือข้อมูลประเภทอื่นๆ ช่วยให้คุณเขียนคำสั่ง SQL ได้ง่ายและกระชับยิ่งขึ้น อย่าลืมระมัดระวังเรื่องลำดับของค่า ประเภทข้อมูล และการรวมค่าขอบเขต เพื่อให้ได้ผลลัพธ์ที่ถูกต้องแม่นยำ

ในบทความถัดไป เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน COUNT() ซึ่งเป็นฟังก์ชันที่ใช้ในการนับจำนวนแถวในตาราง

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์