1. Giới thiệu
Toán tử BETWEEN trong MySQL được sử dụng để lọc các giá trị nằm trong một khoảng. Điều này rất hữu ích khi bạn cần truy vấn dữ liệu dựa trên một khoảng số, ngày tháng, hoặc thậm chí là ký tự chuỗi. Toán tử BETWEEN giúp bạn đơn giản hóa câu lệnh và dễ dàng lọc dữ liệu mà không cần sử dụng nhiều điều kiện so sánh.
Bài viết này sẽ hướng dẫn bạn cách sử dụng toán tử BETWEEN, cú pháp và các ví dụ thực tế để bạn có thể áp dụng trong công việc của mình.
2. Bảng dữ liệu giả định
Giả sử chúng ta có bảng employees với các thông tin như sau:
| employee_id | first_name | last_name | department | salary | age |
|---|---|---|---|---|---|
| 1 | John | Doe | Sales | 1500000 | 35 |
| 2 | Jane | Smith | Marketing | 1700000 | 28 |
| 3 | Bob | Johnson | Sales | 1300000 | 40 |
| 4 | Alice | Brown | HR | 2000000 | 45 |
| 5 | Charlie | Green | Marketing | 1800000 | 25 |
3. MySQL BETWEEN là gì?
Toán tử BETWEEN trong MySQL được sử dụng để lấy các giá trị trong một khoảng bao gồm cả giới hạn trên và giới hạn dưới. BETWEEN thường được sử dụng với các cột chứa dữ liệu số, ngày tháng hoặc thậm chí là chuỗi ký tự.
Cú pháp tổng quát của MySQL BETWEEN:
SELECT column1, column2, ...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;column1, column2, ...: Các cột mà bạn muốn chọn.table_name: Tên của bảng chứa dữ liệu.column_name: Tên của cột mà bạn muốn lọc.value1 AND value2: Khoảng giá trị mà bạn muốn kiểm tra (bao gồm cả giá trịvalue1vàvalue2).
4. Cách sử dụng BETWEEN trong MySQL
a. Sử dụng BETWEEN với dữ liệu số
Bạn có thể sử dụng BETWEEN để lọc các giá trị số nằm trong một khoảng cụ thể.
Ví dụ 1: Tìm tất cả các nhân viên có mức lương nằm trong khoảng từ 1,500,000 đến 2,000,000
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 1500000 AND 2000000;Kết quả:
| first_name | last_name | salary |
|---|---|---|
| John | Doe | 1500000 |
| Jane | Smith | 1700000 |
| Charlie | Green | 1800000 |
| Alice | Brown | 2000000 |
Câu lệnh này sẽ trả về tất cả các nhân viên có mức lương nằm trong khoảng từ 1,500,000 đến 2,000,000, bao gồm cả hai giới hạn 1,500,000 và 2,000,000.
b. Sử dụng BETWEEN với dữ liệu ngày tháng
BETWEEN cũng rất hữu ích khi bạn làm việc với dữ liệu kiểu ngày tháng. Bạn có thể sử dụng nó để lọc các bản ghi trong khoảng thời gian cụ thể.
Ví dụ 2: Tìm tất cả các đơn hàng được đặt trong khoảng từ '2023-01-01' đến '2023-12-31'
SELECT order_id, order_date
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';Câu lệnh này sẽ trả về tất cả các đơn hàng được đặt trong năm 2023.
c. Sử dụng BETWEEN với dữ liệu chuỗi
Toán tử BETWEEN cũng có thể được sử dụng với các chuỗi ký tự, kiểm tra các giá trị chuỗi trong một khoảng thứ tự chữ cái.
Ví dụ 3: Tìm tất cả các nhân viên có họ nằm trong khoảng "B" và "M" (theo bảng chữ cái)
SELECT first_name, last_name
FROM employees
WHERE last_name BETWEEN 'B' AND 'M';Kết quả:
| first_name | last_name |
|---|---|
| John | Doe |
| Alice | Brown |
| Bob | Johnson |
| Charlie | Green |
Câu lệnh này sẽ trả về tất cả các nhân viên có họ nằm trong khoảng từ "B" đến "M" theo bảng chữ cái.
d. Sử dụng NOT BETWEEN
Bạn cũng có thể sử dụng NOT BETWEEN để lấy các giá trị không nằm trong một khoảng giá trị cụ thể.
Ví dụ 4: Tìm tất cả các nhân viên có tuổi không nằm trong khoảng từ 30 đến 40
SELECT first_name, last_name, age
FROM employees
WHERE age NOT BETWEEN 30 AND 40;Kết quả:
| first_name | last_name | age |
|---|---|---|
| Jane | Smith | 28 |
| Alice | Brown | 45 |
| Charlie | Green | 25 |
Câu lệnh này sẽ trả về tất cả các nhân viên có tuổi không nằm trong khoảng từ 30 đến 40.
5. Các ví dụ thực tế về toán tử BETWEEN
Ví dụ 1: Tìm tất cả các nhân viên có mức lương trong khoảng từ 1,300,000 đến 1,800,000
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 1300000 AND 1800000;Ví dụ 2: Tìm tất cả các đơn hàng có tổng giá trị nằm trong khoảng từ 1 triệu đến 5 triệu
SELECT order_id, total_amount
FROM orders
WHERE total_amount BETWEEN 1000000 AND 5000000;Ví dụ 3: Tìm tất cả các nhân viên có họ nằm trong khoảng từ "A" đến "L"
SELECT first_name, last_name
FROM employees
WHERE last_name BETWEEN 'A' AND 'L';Ví dụ 4: Tìm tất cả các đơn hàng được đặt ngoài năm 2023
SELECT order_id, order_date
FROM orders
WHERE order_date NOT BETWEEN '2023-01-01' AND '2023-12-31';Ví dụ 5: Tìm tất cả các nhân viên có tuổi nằm trong khoảng từ 25 đến 35
SELECT first_name, last_name, age
FROM employees
WHERE age BETWEEN 25 AND 35;6. Một số lưu ý khi sử dụng toán tử BETWEEN trong MySQL
a. Bao gồm cả giá trị giới hạn
Toán tử BETWEEN bao gồm cả hai giới hạn của khoảng. Điều này có nghĩa là khi bạn viết BETWEEN 1 AND 5, cả giá trị 1 và 5 đều được bao gồm trong kết quả.
b. Thứ tự của giá trị
Bạn phải luôn viết giá trị nhỏ hơn trước giá trị lớn hơn trong câu lệnh BETWEEN. Nếu bạn viết ngược lại, kết quả sẽ không chính xác.
Ví dụ không đúng:
SELECT * FROM employees WHERE salary BETWEEN 2000000 AND 1500000; -- Sai thứ tực. Sử dụng với các kiểu dữ liệu khác nhau
Toán tử BETWEEN có thể được sử dụng với nhiều kiểu dữ liệu khác nhau, bao gồm số nguyên, số thập phân, ngày tháng và chuỗi ký tự. Tuy nhiên, khi làm việc với chuỗi, hãy lưu ý rằng kết quả phụ thuộc vào thứ tự bảng chữ cái.
d. Xử lý với giá trị NULL
Khi sử dụng BETWEEN với các giá trị có thể chứa NULL, hãy lưu ý rằng NULL không được xem là nằm trong bất kỳ khoảng nào. Do đó, nếu cột có chứa NULL, nó sẽ không được trả về trừ khi bạn sử dụng thêm điều kiện IS NULL.
Kết luận
Toán tử BETWEEN trong SQL là một công cụ mạnh mẽ giúp bạn lọc dữ liệu theo một khoảng giá trị dễ dàng và hiệu quả. Bạn có thể sử dụng BETWEEN với các giá trị số, ngày tháng, và thậm chí là chuỗi ký tự. Kết hợp BETWEEN với các truy vấn khác như NOT BETWEEN, bạn có thể lọc dữ liệu theo nhiều cách khác nhau.
Hãy thử áp dụng các kiến thức này trong các bài tập và dự án thực tế của bạn trên CodeTutHub để thành thạo hơn về cách sử dụng toán tử BETWEEN trong SQL!








