Zoeken…


Invoering

Een kolom is NULL als deze geen waarde heeft, ongeacht het gegevenstype van die kolom. Een kolom mag nooit worden vergeleken met NULL met deze syntaxis a = NULL omdat het resultaat ONBEKEND zou zijn. Gebruik in plaats daarvan de voorwaarden a IS NULL of a IS NOT NULL . NULL is niet gelijk aan NULL. Gebruik een van de hieronder beschreven functies om twee uitdrukkingen met nul te vergelijken. Alle operatoren behalve aaneenschakeling retourneren NULL als een van hun operand NULL is. Het resultaat van 3 * NULL + 5 is bijvoorbeeld nul.

Opmerkingen

NULL kan niet worden weergegeven in kolommen die worden beperkt door een PRIMARY KEY of een NOT NULL-beperking. (Uitzondering is een nieuwe beperking met NOVALIDATE-clausule)

Kolommen van elk gegevenstype kunnen NULL's bevatten

SELECT 1 NUM_COLUMN, 'foo' VARCHAR2_COLUMN from DUAL
UNION ALL
SELECT NULL, NULL from DUAL;
NUM_COLUMN VARCHAR2_COLUMN
1 foo
(nul) (nul)

Lege tekenreeksen zijn NULL

SELECT 1 a, '' b from DUAL;
EEN B
1 (nul)

Bewerkingen die NULL bevatten zijn NULL, behalve aaneenschakeling

SELECT 3 * NULL + 5, 'Hello ' || NULL || 'world'   from DUAL;
3 * + 5 NULL 'HELLO' || NULL || 'WORLD'
(nul) Hallo Wereld

NVL om de nulwaarde te vervangen

SELECT a column_with_null, NVL(a, 'N/A') column_without_null FROM
  (SELECT NULL a FROM DUAL);
COLUMN_WITH_NULL COLUMN_WITHOUT_NULL
(nul) N / A

NVL is handig om twee waarden te vergelijken die NULL kunnen bevatten:

SELECT
    CASE WHEN a = b THEN 1 WHEN a <> b THEN 0 else -1 END comparison_without_nvl,
    CASE WHEN NVL(a, -1) = NVL(b, -1) THEN 1 WHEN NVL(a, -1) <> NVL(b, -1) THEN 0 else -1 END comparison_with_nvl
  FROM
    (select null a, 3 b FROM DUAL
     UNION ALL
     SELECT NULL, NULL FROM DUAL);
COMPARISON_WITHOUT_NVL COMPARISON_WITH_NVL
-1 0
-1 1

NVL2 om een ander resultaat te krijgen als een waarde nul is of niet

Als de eerste parameter NIET NULL is, retourneert NVL2 de tweede parameter. Anders wordt de derde geretourneerd.

SELECT NVL2(null, 'Foo', 'Bar'), NVL2(5, 'Foo', 'Bar') FROM DUAL;
NVL2 (NULL, 'FOO', 'BAR') NVL2 (5, 'FOO', 'BAR')
Bar Foo

COALESCE om de eerste niet-NULL-waarde te retourneren

SELECT COALESCE(a, b, c, d, 5) FROM 
    (SELECT NULL A, NULL b, NULL c, 4 d FROM DUAL);
COALESCE (A, B, C, D, 5)
4

In sommige gevallen kan het gebruik van COALESCE met twee parameters sneller zijn dan het gebruik van NVL wanneer de tweede parameter geen constante is. NVL zal beide parameters altijd evalueren. COALESCE stopt bij de eerste niet-NULL-waarde die het tegenkomt. Het betekent dat als de eerste waarde niet-NULL is, COALESCE sneller zal zijn.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow