Toán tử
BETWEEN...AND
lấy ra một miền dữ liệu nằm giữa hai
giá trị. Hai giá trị này có thể là số, chuỗi văn bản hoặc ngày tháng.
SELECT tên_cột FROM tên_bảng
WHERE
tên_cột
BETWEEN giá_trị_1 AND giá_trị_2
Bảng dữ liệu dùng trong ví dụLastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |
Ví dụ 1
Tìm tất cả những người có họ (sắp xếp theo ABC) nằm giữa Hansen (tính luôn Hansen) và Pettersen (không tính Pettersen):
SELECT * FROM Persons WHERE
LastName
BETWEEN 'Hansen' AND 'Pettersen'
Kết quả trả về:LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Nordmann | Anna | Neset 18 | Sandnes |
Lưu ý quan trọng: Toán tử
BETWEEN...END
sẽ
trả về những kết quả khác nhau trên các hệ CSDL khác nhau. Với một số hệ
CSDL, toán tử BETWEEN...END
sẽ trả về các dòng mà có giá trị
thực sự "nằm giữa" hai khoảng giá trị (tức là bỏ qua không tính đến các
giá trị trùng với giá trị của hai đầu mút). Một số hệ CSDL thì sẽ tính
luôn các giá trị trùng với hai đầu mút. Trong khi đó một số hệ CSDL khác
lại chỉ tính các giá trị trùng với đầu mút thứ nhất mà không tính đầu mút
thứ hai (như ở ví dụ phía trên). Do vậy, bạn phải kiểm tra lại hệ CSDL mà
bạn đang dùng khi sử dụng toán tử BETWEEN...AND
.Ví dụ 2
Để tìm những người có họ (sắp xếp theo ABC) nằm ngoài khoảng hai giá trị ở ví dụ 1, ta dùng thêm toán tử
NOT
:
SELECT * FROM Persons WHERE
LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'
Kết quả trả về:LastName | FirstName | Address | City |
---|---|---|---|
Pettersen | Kari | Storgt 20 | Stavanger |
Svendson | Tove | Borgvn 23 | Sandnes |