Các toán tử AND,OR và BETWEEN trong Mysql

gaconueh2005

Thành viên thân thiết
Thành viên thân thiết
Tham gia
3/3/2013
Bài viết
4.056
Hai toán tử AND và OR nối hai hoặc nhiều điều kiện trong mệnh đề WHERE lại với nhau.

Toán tử AND sẽ hiển thị 1 dòng nếu TẤT CẢ các điều kiện đều thoả mãn. Toán tử OR hiển thị một dòng nếu BẤT KỲ điều kiện nào được thoả.

Bảng dữ liệu dùng trong ví dụ

upload_2014-1-2_17-44-5.png



Ví dụ 1

Sử dụng AND để tìm những người có tên là Tove và họ là Svendson:
SELECT * FROM Persons
WHERE FirstName = 'Tove'
AND LastName = 'Svendson'
Kết quả trả về:

upload_2014-1-2_17-47-45.png

Ví dụ 2

Sử dụng OR để tìm những người có tên là Tove hoặc họ là Svendson:
SELECT * FROM Persons
WHERE firstname = 'Tove'
OR
lastname = 'Svendson'
Kết quả trả về:
upload_2014-1-2_17-51-17.png
Ví dụ 3

Bạn cũng có thể sử dụng kết hợp AND và OR cùng với dấu ngoặc đơn để tạo nên các câu truy vấn phức tạp:

SELECT * FROM Persons WHERE
(FirstName = 'Tove' OR FirstName = 'Stephen' )
AND LastName = 'Svendson'

Kết quả trả về:

upload_2014-1-2_17-53-4.png


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ụ


upload_2014-1-2_18-14-23.png
Ví dụ 1Tì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ề:


upload_2014-1-2_18-21-1.png


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ề:
upload_2014-1-2_18-26-53.png
Nguồn :sưu tầm





 
×
Quay lại
Top