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