[MySQL] Toán tử BETWEEN…AND

By | 16/06/2010

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

Leave a Reply

Your email address will not be published. Required fields are marked *