- Kategorien:
EQUAL_NULL¶
Vergleicht, ob zwei Ausdrücke gleich sind. Die Funktion ist NULL-sicher, d. h. sie behandelt NULL-Werte beim Vergleichen der Gleichheit als bekannte Werte. Beachten Sie, dass sich dies vom Vergleichsoperator EQUAL (=) unterscheidet, der NULLs als unbekannte Werte behandelt.
- Siehe auch::
Syntax¶
EQUAL_NULL( <expr1> , <expr2> ) Nutzungshinweise¶
- Der zurückgegebene Wert hängt davon ab, ob eine der Eingaben NULL-Werte aufweist: - Gibt TRUE zurück:
- EQUAL_NULL( <null> , <null> )
- Gibt FALSE zurück:
- EQUAL_NULL( <null> , <nicht_null> )- EQUAL_NULL( <nicht_null> , <null> )
 - Andernfalls gilt: - EQUAL_NULL(<Ausdruck1>, <Ausdruck2>)entspricht- <Ausdruck1> = <Ausdruck2>
Weitere Einzelheiten finden Sie in den folgenden Beispielen.
Sortierungsdetails¶
- The collation specifications of all input arguments must be compatible. 
- The comparisons follow the collation based on the input arguments‘ collations and precedences. 
Beispiele¶
Erstellen Sie eine Tabelle mit einfachen Daten:
CREATE OR REPLACE TABLE x (i number); INSERT INTO x values (1), (2), (null);
Zeigen Sie das kartesische Produkt an, das durch Verknüpfen der Tabelle mit sich selbst ohne Filter generiert wird:
SELECT x1.i x1_i, x2.i x2_i FROM x x1, x x2 ORDER BY x1.i, x2.i; +------+------+ | X1_I | X2_I | |------+------| | 1 | 1 | | 1 | 2 | | 1 | NULL | | 2 | 1 | | 2 | 2 | | 2 | NULL | | NULL | 1 | | NULL | 2 | | NULL | NULL | +------+------+
Geben Sie Zeilen zurück, die nur gleiche Werte bei beiden Spalten enthalten:
SELECT x1.i x1_i, x2.i x2_i FROM x x1, x x2 WHERE x1.i=x2.i; +------+------+ | X1_I | X2_I | |------+------| | 1 | 1 | | 2 | 2 | +------+------+
Geben Sie Zeilen zurück, die nur gleiche Werte oder NULL-Werte bei beiden Spalten enthalten:
SELECT x1.i x1_i, x2.i x2_i FROM x x1, x x2 WHERE EQUAL_NULL(x1.i,x2.i); +------+------+ | X1_I | X2_I | |------+------| | 1 | 1 | | 2 | 2 | | NULL | NULL | +------+------+
Illustrieren Sie alle möglichen Ergebnisse für EQUAL (=) und NOT EQUAL (<>):
SELECT x1.i x1_i, x2.i x2_i, x1.i=x2.i, iff(x1.i=x2.i, 'Selected', 'Not') "SELECT IF X1.I=X2.I", x1.i<>x2.i, iff(not(x1.i=x2.i), 'Selected', 'Not') "SELECT IF X1.I<>X2.I" FROM x x1, x x2; +------+------+-----------+---------------------+------------+----------------------+ | X1_I | X2_I | X1.I=X2.I | SELECT IF X1.I=X2.I | X1.I<>X2.I | SELECT IF X1.I<>X2.I | |------+------+-----------+---------------------+------------+----------------------| | 1 | 1 | True | Selected | False | Not | | 1 | 2 | False | Not | True | Selected | | 1 | NULL | NULL | Not | NULL | Not | | 2 | 1 | False | Not | True | Selected | | 2 | 2 | True | Selected | False | Not | | 2 | NULL | NULL | Not | NULL | Not | | NULL | 1 | NULL | Not | NULL | Not | | NULL | 2 | NULL | Not | NULL | Not | | NULL | NULL | NULL | Not | NULL | Not | +------+------+-----------+---------------------+------------+----------------------+
Illustrieren Sie alle möglichen Ergebnisse für EQUAL_NULL und NOT(EQUAL_NULL):
SELECT x1.i x1_i, x2.i x2_i, equal_null(x1.i,x2.i), iff(equal_null(x1.i,x2.i), 'Selected', 'Not') "SELECT IF EQUAL_NULL(X1.I,X2.I)", not(equal_null(x1.i,x2.i)), iff(not(equal_null(x1.i,x2.i)), 'Selected', 'Not') "SELECT IF NOT(EQUAL_NULL(X1.I,X2.I))" FROM x x1, x x2; +------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------+ | X1_I | X2_I | EQUAL_NULL(X1.I,X2.I) | SELECT IF EQUAL_NULL(X1.I,X2.I) | NOT(EQUAL_NULL(X1.I,X2.I)) | SELECT IF NOT(EQUAL_NULL(X1.I,X2.I)) | |------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------| | 1 | 1 | True | Selected | False | Not | | 1 | 2 | False | Not | True | Selected | | 1 | NULL | False | Not | True | Selected | | 2 | 1 | False | Not | True | Selected | | 2 | 2 | True | Selected | False | Not | | 2 | NULL | False | Not | True | Selected | | NULL | 1 | False | Not | True | Selected | | NULL | 2 | False | Not | True | Selected | | NULL | NULL | True | Selected | False | Not | +------+------+-----------------------+---------------------------------+----------------------------+--------------------------------------+