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.
Neste tópico:
Lista de operadores lógicos/booleanos¶
Operador |
Exemplo de sintaxe |
Descrição |
---|---|---|
|
|
Corresponde às duas expressões ( |
|
|
Não corresponde à expressão. |
|
|
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);
Os operadores lógicos são geralmente usados em cláusulas WHERE:
SELECT t, f, n FROM logical WHERE t AND NOT f;Saída:
+------+-------+------+ | T | F | N | |------+-------+------| | True | False | NULL | +------+-------+------+
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;Saída:
+------------------------+--------------------------+--------------------------+ | TRUE OR TRUE AND FALSE | TRUE OR (TRUE AND FALSE) | (TRUE OR TRUE) AND FALSE | |------------------------+--------------------------+--------------------------| | True | True | False | +------------------------+--------------------------+--------------------------+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);Saída:
+---------------------+-----------------------+-----------------------+ | NOT FALSE AND FALSE | (NOT FALSE) AND FALSE | NOT (FALSE AND FALSE) | |---------------------+-----------------------+-----------------------| | False | False | True | +---------------------+-----------------------+-----------------------+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);Saída:
+-------------------+---------------------+---------------------+ | NOT FALSE OR TRUE | (NOT FALSE) OR TRUE | NOT (FALSE OR TRUE) | |-------------------+---------------------+---------------------| | True | True | False | +-------------------+---------------------+---------------------+
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);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;Saída:
+-------+-------+------+------+ | OR | FALSE | TRUE | NULL | |-------+-------+------+------| | False | False | True | NULL | | True | True | True | True | | NULL | NULL | True | NULL | +-------+-------+------+------+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;Saída:
+-------+-------+-------+-------+ | AND | FALSE | TRUE | NULL | |-------+-------+-------+-------| | False | False | False | False | | True | False | True | NULL | | NULL | False | NULL | NULL | +-------+-------+-------+-------+