Operadores lógicos/booleanos

Os operadores lógicos retornam o resultado de uma determinada operação booleana em uma ou duas expressões de entrada.

Eles só podem ser usados como um predicado (por exemplo, na cláusula WHERE). As expressões de entrada devem ser predicados.

Consulte também:

BOOLAND , BOOLNOT , BOOLOR , BOOLXOR

Neste tópico:

Lista de operadores lógicos/booleanos

Operador

Exemplo de sintaxe

Descrição

AND

a AND b

Corresponde às duas expressões (a e b).

NOT

NOT a

Não corresponde à expressão.

OR

a OR b

Corresponde a qualquer expressão.

A ordem de precedência desses operadores é mostrada abaixo (do superior ao inferior):

  • NOT

  • AND

  • OR

Exemplos

O primeiro exemplo utiliza a seguinte tabela e dados:

CREATE TABLE logical (t BOOLEAN, f BOOLEAN, n BOOLEAN);
INSERT INTO logical (t, f, n) VALUES (True, False, NULL);
Copy

Os operadores lógicos são geralmente usados em cláusulas WHERE:

SELECT t, f, n FROM logical WHERE t AND NOT f;
Copy

Saída:

+------+-------+------+
| T    | F     | N    |
|------+-------+------|
| True | False | NULL |
+------+-------+------+
Copy

Os exemplos abaixo mostram a precedência dos operadores lógicos:

O primeiro exemplo mostra que a precedência de AND é superior à precedência de OR. A primeira expressão é avaliada da mesma forma que a segunda expressão, não da mesma forma que a terceira expressão.

SELECT TRUE OR TRUE AND FALSE, TRUE OR (TRUE AND FALSE), (TRUE OR TRUE) AND FALSE;
Copy

Saída:

+------------------------+--------------------------+--------------------------+
| TRUE OR TRUE AND FALSE | TRUE OR (TRUE AND FALSE) | (TRUE OR TRUE) AND FALSE |
|------------------------+--------------------------+--------------------------|
| True                   | True                     | False                    |
+------------------------+--------------------------+--------------------------+
Copy

O exemplo seguinte mostra que a precedência de NOT é superior à precedência de AND. A primeira expressão é avaliada da mesma forma que a segunda expressão, não da mesma forma que a terceira expressão.

SELECT NOT FALSE AND FALSE, (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE);
Copy

Saída:

+---------------------+-----------------------+-----------------------+
| NOT FALSE AND FALSE | (NOT FALSE) AND FALSE | NOT (FALSE AND FALSE) |
|---------------------+-----------------------+-----------------------|
| False               | False                 | True                  |
+---------------------+-----------------------+-----------------------+
Copy

O exemplo seguinte mostra que a precedência de NOT é superior à precedência de OR. A primeira expressão é avaliada da mesma forma que a segunda expressão, não da mesma forma que a terceira expressão.

SELECT NOT FALSE OR TRUE, (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE);
Copy

Saída:

+-------------------+---------------------+---------------------+
| NOT FALSE OR TRUE | (NOT FALSE) OR TRUE | NOT (FALSE OR TRUE) |
|-------------------+---------------------+---------------------|
| True              | True                | False               |
+-------------------+---------------------+---------------------+
Copy

Os próximos exemplos mostram “tabelas de verdades” para os operadores lógicos.

Crie uma nova tabela e dados:

CREATE TABLE logical2 (x BOOLEAN);
INSERT INTO logical2 (x) VALUES 
    (False),
    (True),
    (NULL);
Copy

Isto mostra a tabela de verdades para o operador OR:

SELECT x AS "OR", x OR False AS "FALSE", x OR True AS "TRUE", x OR NULL AS "NULL"
  FROM logical2;
Copy

Saída:

+-------+-------+------+------+
| OR    | FALSE | TRUE | NULL |
|-------+-------+------+------|
| False | False | True | NULL |
| True  | True  | True | True |
| NULL  | NULL  | True | NULL |
+-------+-------+------+------+
Copy

Isto mostra a tabela de verdades para o operador AND:

SELECT x AS "AND", x AND False AS "FALSE", x AND True AS "TRUE", x AND NULL AS "NULL"
  FROM logical2;
Copy

Saída:

+-------+-------+-------+-------+
| AND   | FALSE | TRUE  | NULL  |
|-------+-------+-------+-------|
| False | False | False | False |
| True  | False | True  | NULL  |
| NULL  | False | NULL  | NULL  |
+-------+-------+-------+-------+
Copy