Toán tử OR trong MySQL

Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử OR trong MySQL để kết hợp các biểu thức Boolean.

Giới thiệu về toán tử OR trong MySQL

Toán tử OR trong MySQL là một toán tử logic kết hợp hai biểu thức Boolean.

A OR B

Nếu cả A và B không phải là NULL, toán tử OR trả về 1 (true) nếu A hoặc B khác 0. Ví dụ:

SELECT 1 OR 1, 1 OR 0, 0 OR 1;

Đầu ra:

+--------+--------+--------+
| 1 OR 1 | 1 OR 0 | 0 OR 1 |
+--------+--------+--------+
|      1 |      1 |      1 |
+--------+--------+--------+
1 row in set (0.00 sec)

Nếu cả A và B đều bằng 0 (false), toán tử OR trả về 0 (false). Ví dụ:

SELECT 0 OR 0;

Đầu ra:

+--------+
| 0 OR 0 |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

Khi A và / hoặc B là NULL, toán tử OR trả về 1 (true) nếu A hoặc B khác 0. Nếu không, nó trả về NULL. Ví dụ:

SELECT 1 OR NULL, 0 OR NULL, NULL or NULL;

Đầu ra:

+-----------+-----------+--------------+
| 1 OR NULL | 0 OR NULL | NULL or NULL |
+-----------+-----------+--------------+
|         1 |      NULL |         NULL |
+-----------+-----------+--------------+
1 row in set (0.00 sec)

Bảng sau đây cho thấy kết quả của toán tử OR khi kết hợp true (khác 0), false (0) và NULL:

TRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL

Toán tử OR trong MySQL và đánh giá ngắt mạch

Giống như toán tử logic AND, toán tử logic OR cũng có ngắt mạch. Nói cách khác, MySQL ngừng đánh giá các phần còn lại của biểu thức ngay khi nó có thể xác định kết quả. Ví dụ:

SELECT 1 = 1 OR 1 / 0;

Đầu ra:

+----------------+
| 1 = 1 OR 1 / 0 |
+----------------+
|              1 |
+----------------+
1 row in set (0.00 sec)

Vì biểu thức 1 = 1 luôn trả về 1 nên MySQL sẽ không đánh giá biểu thức 1/0. Và MySQL sẽ gặp lỗi nếu nó xảy ra.

Ưu tiên toán tử

Khi một biểu thức chứa cả toán tử ANDOR, MySQL sử dụng ưu tiên toán tử để xác định thứ tự đánh giá của các toán tử. MySQL đánh giá toán tử với mức độ ưu tiên cao hơn được thực hiện trước.

Vì toán tử AND có quyền ưu tiên cao hơn toán tử OR, MySQL đánh giá toán tử AND trước toán tử OR. Ví dụ:

SELECT 1 OR 0 AND 0;

Đầu ra:

+--------------+
| 1 OR 0 AND 0 |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

Làm thế nào nó hoạt động.

1 OR 0 AND 0 = 1 OR 0 = 1

Để thay đổi thứ tự đánh giá, bạn sử dụng dấu ngoặc đơn. Ví dụ:

SELECT (1 OR 0) AND 0;

Đầu ra:

+----------------+
| (1 OR 0) AND 0 |
+----------------+
|              0 |
+----------------+
1 row in set (0.00 sec)

Làm thế nào nó hoạt động.

(1 OR 0) AND 0 = 1 AND 0 = 0

Ví dụ về toán tử OR trong MySQL

Chúng ta sẽ sử dụng bảng customers từ cơ sở dữ liệu mẫu để minh họa.

Ví dụ về toán tử OR trong MySQL

Truy vấn sau sử dụng toán tử OR trong mệnh đề WHERE để chọn tất cả các khách hàng ở Hoa Kỳ hoặc Pháp:

SELECT    
	customername, 
	country
FROM    
	customers
WHERE country = 'USA' OR 
      country = 'France';

Đầu ra:

+------------------------------+---------+
| customername                 | country |
+------------------------------+---------+
| Atelier graphique            | France  |
| Signal Gift Stores           | USA     |
| La Rochelle Gifts            | France  |
| Mini Gifts Distributors Ltd. | USA     |
| Mini Wheels Co.              | USA     |
| Land of Toys Inc.            | USA     |
| Saveley & Henriot, Co.       | France  |
| Muscle Machine Inc           | USA     |
| Diecast Classics Inc.        | USA     |
...

Ví dụ sau đây sử dụng toán tử OR để chọn khách hàng ở Hoa Kỳ hoặc Pháp và có hạn mức tín dụng lớn hơn 100K.

SELECT   
	customername, 
	country, 
	creditLimit
FROM   
	customers
WHERE (country = 'USA'
	OR country = 'France')
	AND creditlimit > 100000;

Đầu ra:

+------------------------------+---------+-------------+
| customername                 | country | creditLimit |
+------------------------------+---------+-------------+
| La Rochelle Gifts            | France  |   118200.00 |
| Mini Gifts Distributors Ltd. | USA     |   210500.00 |
| Land of Toys Inc.            | USA     |   114900.00 |
| Saveley & Henriot, Co.       | France  |   123900.00 |
| Muscle Machine Inc           | USA     |   138500.00 |
| Diecast Classics Inc.        | USA     |   100600.00 |
| Collectable Mini Designs Co. | USA     |   105000.00 |
| Marta's Replicas Co.         | USA     |   123700.00 |
| Mini Classics                | USA     |   102700.00 |
| Corporate Gift Ideas Co.     | USA     |   105000.00 |
| Online Diecast Creations Co. | USA     |   114200.00 |
+------------------------------+---------+-------------+
11 rows in set (0.00 sec)
Lưu ý rằng nếu bạn không sử dụng dấu ngoặc đơn, truy vấn sẽ trả về những khách hàng ở Hoa Kỳ có hạn mức tính dụng bất kỳ hoặc những khách hàng ở Pháp có hạn mức tín dụng lớn hơn 100K.
SELECT    
    customername, 
    country, 
    creditLimit
FROM    
    customers
WHERE 
    country = 'USA'
    OR country = 'France'
    AND creditlimit > 100000;

Đầu ra:

+------------------------------+---------+-------------+
| customername                 | country | creditLimit |
+------------------------------+---------+-------------+
| Signal Gift Stores           | USA     |    71800.00 |
| La Rochelle Gifts            | France  |   118200.00 |
| Mini Gifts Distributors Ltd. | USA     |   210500.00 |
| Mini Wheels Co.              | USA     |    64600.00 |
| Land of Toys Inc.            | USA     |   114900.00 |
| Saveley & Henriot, Co.       | France  |   123900.00 |
| Muscle Machine Inc           | USA     |   138500.00 |
| Diecast Classics Inc.        | USA     |   100600.00 |
| Technics Stores Inc.         | USA     |    84600.00 |
| American Souvenirs Inc       | USA     |        0.00 |
...

Tóm lược

  • Toán tử OR kết hợp hai biểu thức Boolean và trả về true khi một trong hai biểu thức là true. Nếu không, nó trả về false.
  • MySQL đánh giá toán tử OR sau toán tử AND nếu một biểu thức chứa cả hai toán tử ANDOR.
  • Sử dụng dấu ngoặc đơn để thay đổi thứ tự đánh giá.
MySQL
Bài Viết Liên Quan:
Toán Tử IS NULL Trong MySQL
Nụ Nguyễn 01/04/2022
Toán Tử IS NULL Trong MySQL

Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử MySQL IS NULLđể kiểm tra xem một giá trị có NULL hay không.

Câu lệnh UPDATE JOIN trong MySQL
Trung Nguyen 06/03/2022
Câu lệnh UPDATE JOIN trong MySQL

Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE JOIN trong MySQL để thực hiện cập nhật bảng chéo.

Mệnh đề LIMIT trong MySQL
Trung Nguyen 05/03/2022
Mệnh đề LIMIT trong MySQL

Trong hướng dẫn này, bạn sẽ học cách sử dụng mệnh đề LIMIT trong MySQL để hạn chế số hàng được trả về bởi một truy vấn.

Toán tử LIKE trong MySQL
Trung Nguyen 04/03/2022
Toán tử LIKE trong MySQL

Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử LIKE trong MySQL để truy vấn dữ liệu dựa trên một mẫu được chỉ định.