Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử MySQL
1 để kết hợp các biểu thức BooleanCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Giới thiệu về toán tử MySQL OR
Toán tử MySQL
1 là toán tử logic kết hợp hai biểu thức BooleanCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Code language: SQL [Structured Query Language] [sql]
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 không. Ví dụ
Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Code language: plaintext [plaintext]
+--------+--------+--------+ | 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 [sai], toán tử OR trả về 0. Ví dụ
Code language: SQL [Structured Query Language] [sql]
SELECT 0 OR 0;
Code language: plaintext [plaintext]
+--------+ | 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 không. Nếu không, nó trả về NULL. Ví dụ
Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR NULL, 0 OR NULL, NULL or NULL;
+-----------+-----------+--------------+ | 1 OR NULL | 0 OR NULL | NULL or NULL | +-----------+-----------+--------------+ | 1 | NULL | NULL | +-----------+-----------+--------------+ 1 row in set [0.00 sec]
Code language: plaintext [plaintext]
Bảng sau đây cho biết kết quả của toán tử
1 khi kết hợp true [khác không], false [không] và NULLTRUEFALSENULLTRUETRUETRUETRUEFALSETRUEFALSENULLNULLTRUENULLNULLCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Toán tử MySQL OR và đánh giá ngắn mạch
Giống như toán tử
4, toán tửCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
1 cũng bị đoản 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ụCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
2Code language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Dùng thử
3Code language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Bởi vì biểu thức
6 luôn trả về 1, MySQL sẽ không đánh giá biểu thức 1/0. Và MySQL sẽ báo lỗi nếu nó xảy raCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Ưu tiên điều hành
Khi một biểu thức chứa cả toán tử
7 vàCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
1, MySQL sử dụng thứ tự ưu tiên của toán tử để xác định thứ tự đánh giá của toán tử. MySQL đánh giá toán tử có mức độ ưu tiên cao hơn trướcCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Do toán tử
7 có độ ưu tiên cao hơn toán tử
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
Code language: plaintext [plaintext]
1 nên MySQL đánh giá toán tửCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
7 trước toán tửCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
1. Ví dụCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
1Code language: SQL [Structured Query Language] [sql]
A OR B
Dùng thử
0Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Làm thế nào nó hoạt động
1Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Để thay đổi thứ tự đánh giá, bạn sử dụng dấu ngoặc đơn. Ví dụ
2Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Dùng thử
3Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Làm thế nào nó hoạt động
4Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Ví dụ toán tử MySQL OR
Chúng tôi sẽ sử dụng bảng
3 từ cơ sở dữ liệu mẫu để minh họaCode language: SQL [Structured Query Language] [sql]
SELECT 0 OR 0;
Truy vấn sau đây sử dụng toán tử
1 trong mệnh đềCode language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
5 để chọn tất cả các khách hàng ở Hoa Kỳ hoặc PhápCode language: SQL [Structured Query Language] [sql]
SELECT 0 OR 0;
5Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Dùng thử
6Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Ví dụ sau sử dụng toán tử
1 để 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 100.000Code language: plaintext [plaintext]
+--------+--------+--------+ | 1 OR 1 | 1 OR 0 | 0 OR 1 | +--------+--------+--------+ | 1 | 1 | 1 | +--------+--------+--------+ 1 row in set [0.00 sec]
7Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Dùng thử
8Code language: SQL [Structured Query Language] [sql]
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
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ỳ hoặc những khách hàng ở Pháp với hạn mức tín dụng lớn hơn 100.000