Categorias:

Funções de expressão condicional

BOOLXOR

Calcula o XOR booleano de duas expressões numéricas, ou seja, uma das expressões, mas não as duas expressões, é verdadeira. De acordo com a semântica booleana:

  • Valores diferentes de zero, incluindo números negativos, são considerados como True.

  • Os valores zero são considerados como False.

Como resultado, a função retorna:

  • True se uma expressão for diferente de zero e a outra expressão for zero.

  • False se ambas as expressões forem diferentes de zero ou se ambas as expressões forem zero.

  • NULL se uma ou ambas as expressões forem NULL.

Consulte também:

BOOLAND , BOOLNOT , BOOLOR

Sintaxe

BOOLXOR( <expr1> , <expr2> )
Copy

Argumentos

expr1

Uma expressão numérica.

expr2

Uma expressão numérica.

Retornos

Esta função retorna um valor do tipo BOOLEAN ou NULL.

Notas de uso

Esta função arredonda números de ponto flutuante. Portanto, ele pode retornar resultados inesperados quando arredonda os números de ponto flutuante diferentes de zero para zero.

Para obter exemplos desse comportamento e soluções alternativas, consulte Computação booleana XOR Resultados para números de ponto flutuante.

Exemplos

Os exemplos a seguir usam a função BOOLXOR.

Computação booleana XOR Resultados para números inteiros e NULL Valores

A consulta a seguir calcula booleano XOR Resultados para números inteiros e NULL Valores:

SELECT BOOLXOR(2, 0),
       BOOLXOR(1, -1),
       BOOLXOR(0, 0),
       BOOLXOR(NULL, 3),
       BOOLXOR(NULL, 0),
       BOOLXOR(NULL, NULL);
Copy
+---------------+----------------+---------------+------------------+------------------+---------------------+
| BOOLXOR(2, 0) | BOOLXOR(1, -1) | BOOLXOR(0, 0) | BOOLXOR(NULL, 3) | BOOLXOR(NULL, 0) | BOOLXOR(NULL, NULL) |
|---------------+----------------+---------------+------------------+------------------+---------------------|
| True          | False          | False         | NULL             | NULL             | NULL                |
+---------------+----------------+---------------+------------------+------------------+---------------------+

Computação booleana XOR Resultados para números de ponto flutuante

Os exemplos a seguir demonstram como a função pode retornar resultados inesperados para números de ponto flutuante arredondados para zero.

Para as consultas a seguir, um resultado de False podem ser esperados para as seguintes chamadas de função, mas eles retornam True porque a função arredonda os valores de ponto flutuante diferentes de zero para zero:

SELECT BOOLXOR(2, 0.3);
Copy
+-----------------+
| BOOLXOR(2, 0.3) |
|-----------------|
| True            |
+-----------------+
SELECT BOOLXOR(-0.4, 5);
Copy
+------------------+
| BOOLXOR(-0.4, 5) |
|------------------|
| True             |
+------------------+

Da mesma forma, um resultado de True podem ser esperados para as seguintes chamadas de função, mas eles retornam False:

SELECT BOOLXOR(0, 0.3);
Copy
+-----------------+
| BOOLXOR(0, 0.3) |
|-----------------|
| False           |
+-----------------+
SELECT BOOLXOR(-0.4, 0);
Copy
+------------------+
| BOOLXOR(-0.4, 0) |
|------------------|
| False            |
+------------------+

Se necessário, você pode contornar esse comportamento de arredondamento para valores de ponto flutuante positivos usando o CEIL Função. Por exemplo, a consulta a seguir retorna False:

SELECT BOOLXOR(2, CEIL(0.3));
Copy
+-----------------------+
| BOOLXOR(2, CEIL(0.3)) |
|-----------------------|
| False                 |
+-----------------------+

Para valores de ponto flutuante negativos, você pode contornar esse comportamento de arredondamento usando o FLOOR Função. Por exemplo, a consulta a seguir retorna False:

SELECT BOOLXOR(FLOOR(-0.4), 5);
Copy
+-------------------------+
| BOOLXOR(FLOOR(-0.4), 5) |
|-------------------------|
| False                   |
+-------------------------+