Trong bài này chúng ta tìm hiểu cách sử dụng toán tử BETWEEN trong MySQL để xác định dữ liệu trong một khoảng nào đó. Để select trong khoảng thì ngoài BETWEEN ra ta có thể sử dụng toán tử AND để thay thế, chi tiết thế nào thì chúng ta cùng tìm hiểu nhé.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
1. Select trong khoảng với BETWEEN trong MySQL
Giả sử ta có bảng dữ liệu như sau:
Bây giờ cần lấy những sinh viên có năm sinh trong khoảng từ 1970 đến 1990 thì ta sử lệnh
SELECT và ở WHERE
sử dụng toán tử AND
:
Bài viết này được đăng tại [free tuts .net]
SELECT * FROM SINHVIEN WHERE NamSinh >= 1970 AND NamSinh 1990
Cách 2: Sử dụng NOT BETWEEN
SELECT * FROM SINHVIEN WHERE NamSinh NOT BETWEEN 1970 AND 1990
Cả hai ví dụ đều có kết quả như sau:
3. Sử dụng BETWEEN với các kiểu dữ liệu khác
BETWEEN
thường sử dụng với dữ liệu kiểu INT
, tuy nhiên bạn vẫn sử dụng được với các kiểu dữ liệu khác như:
CHARACTER
: Tuân theo thứ tự trong bảng mãASCII
DATE
: Bạn nên sử dụng thêm hàmCASE
chuyển dữ liệu sang dạngDATE
để có kết quả chính xác nhất.
Ví dụ 1: Lấy danh sách sinh viên có tên gồm các ký tự trong khoảng 'A' đến 'B'
SELECT * FROM SINHVIEN WHERE TenSV BETWEEN 'A' AND 'B'
Ví dụ 2: Giả sử bảng sinh viên thêm cột ngày nhập học. Bây giờ viết câu truy vấn lấy danh sách sinh viên nhập học từ ngày 01/01/2003 đến ngày 01/01/2014 thì ta làm như sau:
SELECT * FROM SINHVIEN WHERE NgayNhapHoc BETWEEN CAST['2003-01-01' AS DATE] AND CAST['2014-01-01' AS DATE]
4. Lời kết
Vậy, để select trong khoảng nào đó thì ta thường sử dụng BETWEEN
, tuy nhiên cũng phụ thuộc vào thói quen của mỗi người mà
chọn giữa AND
với BETWEEN
, OR
với NOT BETWEEN
.
13.6.5.1 CASE Statement
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
Or:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
The CASE
statement for stored programs implements a complex conditional construct.
For the first syntax, case_value
is an expression. This value is compared to the when_value
expression in each WHEN
clause until one of them is equal. When an
equal when_value
is found, the corresponding THEN
clause statement_list
executes. If no when_value
is equal, the ELSE
clause statement_list
executes, if there is one.
This syntax cannot be used to test for equality with NULL
because NULL = NULL
is false. See Section 3.3.4.6, “Working with NULL Values”.
For the
second syntax, each WHEN
clause search_condition
expression is evaluated until one is true, at which point its corresponding THEN
clause statement_list
executes. If no search_condition
is equal, the ELSE
clause statement_list
executes, if there is one.
If no when_value
or search_condition
matches the value tested and the CASE
statement contains
no ELSE
clause, a Case not found for CASE statement error results.
Each statement_list
consists of one or more SQL statements; an empty statement_list
is not permitted.
To handle situations where no value is matched by any WHEN
clause, use an ELSE
containing an empty BEGIN ...
END
block, as shown in this example. [The
indentation used here in the ELSE
clause is for purposes of clarity only, and is not otherwise significant.]
DELIMITER |
CREATE PROCEDURE p[]
BEGIN
DECLARE v INT DEFAULT 1;
CASE v
WHEN 2 THEN SELECT v;
WHEN 3 THEN SELECT 0;
ELSE
BEGIN
END;
END CASE;
END;
|