14 July 2016

Toán tử BETWEEN…AND trong kết hợp với WHERE

 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.
Toán tử 
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ụ
LastNameFirstNameAddressCity
HansenOlaTimoteivn 10Sandnes
NordmannAnnaNeset 18Sandnes
PettersenKariStorgt 20Stavanger
SvendsonToveBorgvn 23Sandnes
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ề:
LastNameFirstNameAddressCity
HansenOlaTimoteivn 10Sandnes
NordmannAnnaNeset 18Sandnes
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ề:
LastNameFirstNameAddressCity
PettersenKariStorgt 20Stavanger
SvendsonToveBorgvn 23Sandnes

0 nhận xét:

Post a Comment

 

BACK TO TOP

Xuống cuối trang