La plupart des principaux SGBD nous fournissent une fonction pour remplacer les valeurs nulles par une autre valeur.
Mais le nom de la fonction a tendance à différer d'un SGBD à l'autre. Par exemple, SQL Server a un ISNULL()
fonction, tandis que d'autres (comme MySQL, MariaDB et SQLite) ont un IFNULL()
fonction pour faire la même chose.
Cependant, pour confondre les choses, MySQL et MariaDB ont chacun un ISNULL()
fonction qui fonctionne différemment de la fonction SQL Server du même nom (l'implémentation de MySQL et MariaDB n'accepte qu'un seul argument et renvoie 1
si c'est null
et 0
si ce n'est pas le cas).
Quoi qu'il en soit, dans le cas d'Oracle Database, nous pouvons utiliser le NVL()
fonction pour remplacer les valeurs nulles par une autre valeur.
En fait, Oracle Database a également un NVL2()
fonction qui nous permet de fournir une autre valeur à utiliser dans le cas où le premier argument n'est pas null
.
Si nous voulons simplement tester si une valeur est null
ou non, nous pouvons utiliser le IS NULL
condition (ou la condition IS NOT NULL
pour le test opposé).
Le NVL()
Fonction
Voici un exemple qui montre comment le NVL()
la fonction fonctionne :
SELECT NVL(null, 'Run')
FROM DUAL;
Résultat :
Run
Dans ce cas, le premier argument était null
et donc le deuxième argument a été renvoyé.
Voici ce qui se passe lorsque le premier argument n'est pas null
:
SELECT NVL('Walk', 'Run')
FROM DUAL;
Résultat :
Walk
Le premier argument est renvoyé.
Le NVL2()
Fonction
Comme mentionné, Oracle Database nous fournit également le NVL2()
une fonction. Cette fonction nous permet de fournir une autre valeur à utiliser dans le cas où le premier argument n'est pas null
.
Voici un exemple de son fonctionnement :
SELECT NVL2(null, 2, 3)
FROM DUAL;
Résultat :
3
Le premier argument était null
et donc le troisième argument a été renvoyé.
Voici ce qui se passe lorsque le premier argument n'est pas null
:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Résultat :
2
Le deuxième argument est renvoyé.
Le IS NULL
et IS NOT NULL
Conditions
Si nous voulons juste savoir si oui ou non une valeur est null
, nous pouvons utiliser le IS NULL
condition de comparaison. Nous pouvons également utiliser IS NOT NULL
pour vérifier si ce n'est pas null
.
Supposons que nous ayons le tableau suivant :
SELECT * FROM Autoparts
WHERE Price IS NULL;
Résultat :
identifiant | OE# | PRIX | MODÈLE |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
1 | 62150A3278 | 168 | HILUX |
Dans ce cas, le PRICE
colonne contient une valeur nulle pour la première ligne, mais pas pour la deuxième ligne.
Voici un exemple d'utilisation de IS NULL
contre cette table :
SELECT * FROM Autoparts
WHERE Price IS NULL;
Résultat :
identifiant | OE# | PRIX | MODÈLE |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
Seule la ligne avec le prix nul est renvoyée.
Voici ce qui se passe lorsque nous utilisons IS NOT NULL
:
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;
Résultat :
identifiant | OE# | PRIX | MODÈLE |
---|---|---|---|
1 | 62150A3278 | 168 | HILUX |
L'autre ligne est renvoyée.