Handling NULL values
  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)