| Start |
Operations containing NULL are NULL, except concatenation | 3*NULL+5 | 'HELLO' | | NULL | | 'WORLD' | | (null) | Hello world | | | | | |
| NVL2 to get a different result if a value is null or not If the first parameter is NOT NULL, NVL2 will return the second parameter. Otherwise it will return the third one. | NVL2(NULL,'FOO','BAR') | NVL2(5,'FOO','BAR') | | Bar | Foo | |
| COALESCE to return the first non-NULL value In some case, using COALESCE with two parameters can be faster than using NVL when the second parameter is not a constant. NVL will always evaluate both parameters. COALESCE will stop at the first non-NULL value it encounters. It means that if the first value is non-NULL, COALESCE will be faster. |
Columns of any data type can contain NULLs | NUM_COLUMN | VARCHAR2_COLUMN | | 1 | foo | | (null) | (null) | |
| Empty strings are NULL |
NVL to replace null value | COLUMN_WITH_NULL | COLUMN_WITHOUT_NULL | | (null) | N/A | NVL is useful to compare two values which can contain NULLs : | COMPARISON_WITHOUT_NVL | COMPARISON_WITH_NVL | | -1 | 0 | | -1 | 1 | NULL can't appear in columns restricted by a PRIMARY KEY or a NOT NULL constraint.
(Exception is a new constraint with NOVALIDATE clause) |