Resumo : neste tutorial, você aprenderá como usar o OR
operador MySQL para combinar expressões booleanas.
Introdução ao operador MySQL OR
OR
O operador MySQL é um operador lógico que combina duas expressões booleanas .
A OR B
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se A e B não forem NULL, o operador OR retornará 1 (verdadeiro) se A ou B for diferente de zero. Por exemplo:
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+--------+--------+--------+
| 1 OR 1 | 1 OR 0 | 0 OR 1 |
+--------+--------+--------+
| 1 | 1 | 1 |
+--------+--------+--------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Se A e B forem zero (falso), o operador OR retornará zero. Por exemplo:
SELECT 0 OR 0;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+--------+
| 0 OR 0 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Quando A e/ou B são NULL, o operador OR retorna 1 (verdadeiro) se A ou B for diferente de zero. Caso contrário, retorna NULL. Por exemplo:
SELECT 1 OR NULL, 0 OR NULL, NULL or NULL;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+-----------+-----------+--------------+
| 1 OR NULL | 0 OR NULL | NULL or NULL |
+-----------+-----------+--------------+
| 1 | NULL | NULL |
+-----------+-----------+--------------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
A tabela a seguir mostra o resultado do OR
operador ao combinar verdadeiro (diferente de zero), falso (zero) e NULL:
verdadeiro | FALSO | NULO | |
verdadeiro | verdadeiro | verdadeiro | verdadeiro |
FALSO | verdadeiro | FALSO | NULO |
NULO | verdadeiro | NULO | NULO |
Operador MySQL OR e avaliação de curto-circuito
Assim como o AND
operador, o OR
operador também está em curto-circuito. Em outras palavras, o MySQL para de avaliar as partes restantes da expressão assim que consegue determinar o resultado. Por exemplo:
SELECT 1 = 1 OR 1 / 0;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+----------------+
| 1 = 1 OR 1 / 0 |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Como a expressão 1 = 1
sempre retorna 1, o MySQL não avaliará a expressão 1/0. E o MySQL emitiria um erro se isso acontecesse.
Operador precedente
Quando uma expressão contém operadores AND
e OR
, o MySQL usa a precedência do operador para determinar a ordem de avaliação dos operadores. O MySQL avalia primeiro o operador com maior precedência.
Como o AND
operador tem precedência maior que o OR
operador, o MySQL avalia o AND
operador antes do OR
operador. Por exemplo:
SELECT 1 OR 0 AND 0;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+--------------+
| 1 OR 0 AND 0 |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Como funciona.
1 OR 0 AND 0 = 1 OR 0 = 1
Para alterar a ordem de avaliação, use os parênteses. Por exemplo:
SELECT (1 OR 0) AND 0;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+----------------+
| (1 OR 0) AND 0 |
+----------------+
| 0 |
+----------------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Como funciona.
(1 OR 0) AND 0 = 1 AND 0 = 0
Exemplos de operadores OR do MySQL
Usaremos a customers
tabela do banco de dados de exemplo para a demonstração:
A consulta a seguir utiliza o OR
operador da WHERE
cláusula para selecionar todos os clientes localizados nos EUA ou na França:
SELECT
customername,
country
FROM
customers
WHERE country = 'USA' OR
country = 'France';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+------------------------------+---------+
| 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 |
...
Linguagem de código: texto simples ( texto simples )
O exemplo a seguir utiliza a OR
operadora para selecionar os clientes localizados nos EUA ou na França e com limite de crédito superior a 100.000.
SELECT
customername,
country,
creditLimit
FROM
customers
WHERE(country = 'USA'
OR country = 'France')
AND creditlimit > 100000;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+------------------------------+---------+-------------+
| 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)
Linguagem de código: texto simples ( texto simples )
Observe que se você não usar os parênteses, a consulta retornará os clientes localizados nos EUA ou os clientes localizados na França com limite de crédito superior a 100.000.
SELECT
customername,
country,
creditLimit
FROM
customers
WHERE
country = 'USA'
OR country = 'France'
AND creditlimit > 100000;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+------------------------------+---------+-------------+
| 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 |
...
Linguagem de código: texto simples ( texto simples )
Resumo
- O
OR
operador combina duas expressões booleanas e retorna verdadeiro quando uma das expressões é verdadeira. Caso contrário, retorna falso. - O MySQL avalia o
OR
operador após oAND
operador se uma expressão contém operadoresAND
eOR
. - Use parênteses para alterar a ordem de avaliação.