- Kategorien:
NVL¶
Wenn expr1
den Wert NULL hat, wird expr2
zurückgegeben, ansonsten wird expr1
zurückgegeben.
- Aliasse:
Syntax¶
NVL( <expr1> , <expr2> )
Argumente¶
expr1
Ein allgemeiner Ausdruck.
expr2
Ein allgemeiner Ausdruck.
Nutzungshinweise¶
Übergeben Sie möglichst Argumente desselben Typs. Vermeiden Sie die Übergabe von Argumenten unterschiedlichen Typs.
Wenn eines der Argumente eine Zahl ist, führt die Funktion automatisch eine Umwandlung der nichtnumerischen Zeichenfolgenargumente (z. B.
'a string'
) und der Zeichenfolgenargumente, die keine Konstanten sind, in den Typ NUMBER(18,5) aus.Wenn bei numerischen Zeichenfolgenargumenten, die keine Konstanten sind, NUMBER(18,5) nicht ausreicht, um den numerischen Wert darzustellen, müssen Sie das Argument in einen Typ umwandeln, der den Wert darstellen kann.
Jeder Ausdruck kann eine
SELECT
-Anweisung enthalten, die wiederum Mengenoperatoren enthalten kann, wieUNION
,INTERSECT
,EXCEPT
undMINUS
. Stellen Sie bei der Verwendung von Mengenoperatoren sicher, dass die Datentypen kompatibel sind. Weitere Informationen dazu finden Sie unter Allgemeine Nutzungshinweise unter dem Thema Mengenoperatoren.
Sortierungsdetails¶
The collation specifications of all input arguments must be compatible.
The collation of the result of the function is the highest-precedence collation of the inputs.
Rückgabewerte¶
Gibt den Datentyp des zurückgegebenen Ausdrucks zurück.
Wenn beide Ausdrücke NULL sind, wird NULL zurückgegeben.
Beispiele¶
Erstellen Sie eine Tabelle, die Kontaktinformationen für Lieferanten enthält:
CREATE TABLE IF NOT EXISTS suppliers (
supplier_id INT PRIMARY KEY,
supplier_name VARCHAR(30),
phone_region_1 VARCHAR(15),
phone_region_2 VARCHAR(15));
Die Tabelle enthält die Telefonnummern der einzelnen Anbieter in zwei verschiedenen Regionen. Die Rufnummer kann NULL für eine Region sein.
Fügen Sie Werte in die Tabelle ein:
INSERT INTO suppliers(supplier_id, supplier_name, phone_region_1, phone_region_2)
VALUES(1, 'Company_ABC', NULL, '555-01111'),
(2, 'Company_DEF', '555-01222', NULL),
(3, 'Company_HIJ', '555-01333', '555-01444'),
(4, 'Company_KLM', NULL, NULL);
Die folgende SELECT-Anweisung verwendet die Funktion NVL, um die Werte von phone_region_1
und phone_region_2
abzurufen.
Dieses Beispiel zeigt die folgenden Ergebnisse für die Funktion NVL:
Die Spalte
IF_REGION_1_NULL
enthält den Wert vonphone_region_1
oder, wenn dieser Wert NULL ist, den Wert vonphone_region_2
.Die Spalte
IF_REGION_2_NULL
enthält den Wert vonphone_region_2
oder, wenn dieser Wert NULL ist, den Wert vonphone_region_1
.Wenn die Werte von
phone_region_1
undphone_region_2
beide NULL sind, gibt die Funktion NULL zurück.
SELECT supplier_id,
supplier_name,
phone_region_1,
phone_region_2,
NVL(phone_region_1, phone_region_2) IF_REGION_1_NULL,
NVL(phone_region_2, phone_region_1) IF_REGION_2_NULL
FROM suppliers
ORDER BY supplier_id;
+-------------+---------------+----------------+----------------+------------------+------------------+
| SUPPLIER_ID | SUPPLIER_NAME | PHONE_REGION_1 | PHONE_REGION_2 | IF_REGION_1_NULL | IF_REGION_2_NULL |
|-------------+---------------+----------------+----------------+------------------+------------------|
| 1 | Company_ABC | NULL | 555-01111 | 555-01111 | 555-01111 |
| 2 | Company_DEF | 555-01222 | NULL | 555-01222 | 555-01222 |
| 3 | Company_HIJ | 555-01333 | 555-01444 | 555-01333 | 555-01444 |
| 4 | Company_KLM | NULL | NULL | NULL | NULL |
+-------------+---------------+----------------+----------------+------------------+------------------+