Kategorien:

Funktionen für bedingte Ausdrücke

BOOLXOR

Berechnet das boolesche XOR von zwei numerischen Ausdrücken (d. h. einer der Ausdrücke ist wahr, aber nicht beide). In Übereinstimmung mit der booleschen Semantik:

  • Nicht-Null-Werte (einschließlich negativer Zahlen) werden als „True“ betrachtet.

  • Nullwerte werden als „False“ betrachtet.

Als Ergebnis gibt die Funktion Folgendes zurück:

  • True, wenn ein Ausdruck nicht Null ist und der andere Ausdruck Null ist.

  • False, wenn beide Ausdrücke nicht Null sind oder beide Ausdrücke Null sind.

  • NULL, wenn einer oder beide Ausdrücke NULL sind.

Siehe auch:

BOOLAND , BOOLNOT , BOOLOR

Syntax

BOOLXOR( <expr1> , <expr2> )
Copy

Argumente

expr1

Ein numerischer Ausdruck.

expr2

Ein numerischer Ausdruck.

Rückgabewerte

Diese Funktion gibt einen Wert vom Typ BOOLEAN oder NULL zurück.

Nutzungshinweise

Diese Funktion rundet Fließkommazahlen. Daher kann es zu unerwarteten Ergebnissen kommen, wenn Gleitkommazahlen ungleich Null auf Null gerundet werden.

Beispiele für dieses Verhalten und Problemumgehungen finden Sie unter Boolesche XOR-Ergebnisse für Gleitkommazahlen berechnen.

Beispiele

Die folgenden Beispiele verwenden die Funktion BOOLXOR.

Boolesche XOR-Ergebnisse für ganze Zahlen und NULL-Werte berechnen

Die folgende Abfrage berechnet boolesche XOR-Ergebnisse für ganze Zahlen und NULL-Werte:

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                |
+---------------+----------------+---------------+------------------+------------------+---------------------+

Boolesche XOR-Ergebnisse für Gleitkommazahlen berechnen

Die folgenden Beispiele zeigen, wie die Funktion bei Gleitkommazahlen, die auf Null gerundet werden, unerwartete Ergebnisse liefern kann.

Für die folgenden Abfragen wird möglicherweise das Ergebnis False Für die folgenden Funktionsaufrufe erwartet, aber sie geben True zurück, da die Funktion Nicht-Null-Gleitkommawerte auf Null rundet:

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

Ebenso wird möglicherweise das Ergebnis True für die folgenden Funktionsaufrufe erwartet, aber sie geben False zurück:

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

Falls erforderlich, können Sie dieses Rundungsverhalten für positive Gleitkommawerte umgehen, indem Sie die Funktion CEIL verwenden. Die folgende Abfrage gibt zum Beispiel False zurück:

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

Bei negativen Gleitkommawerten können Sie dieses Rundungsverhalten umgehen, indem Sie die Funktion FLOOR verwenden. Die folgende Abfrage gibt zum Beispiel False zurück:

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