Je dois afficher Employee last_name
et le montant de commission de la table employee dans Oracle SQL, mais la condition est qu'elle rencontre la valeur NULL
et que je dois imprimer "Aucune commission".
Pour la première partie, j'ai écrit:
select last_name, commission_pct from employees;
Mais je ne parviens pas à savoir comment remplacer les valeurs NULL
par "Aucune commission".
Vous pouvez utiliser l'expression case
:
select last_name
, case when commision_pct is null then 'No Commission' else commision_pct end
from employees;
ou coalesce
:
select last_name
, coalesce(commision_pct, 'No Commission')
from employees;
ou nvl
:
select last_name
, nvl(commision_pct, 'No Commission')
from employees;
P.S. Si le type de données de commision_pct
n'est pas varchar
, vous devez également utiliser cast
ou to_char
.
Pour Oracle
select last_name, nvl(commission_pct,'No Commission')
from employees;
Pour SQL
select last_name, isnull(commission_pct,"No Commission") as commission_pct
from employees;
sélectionnez Last_Name, decode (nvl (salaire commission_pct, '0'), 0, 'aucune commission, salaire commission_pct) comme COMM.
Une autre alternative, assez simple et précise:
nvl(to_char(commision_pct), 'No Commission')
Étant donné que commision_pct
estNUMÉROtype de données, to_char
le convertira explicitement en chaîne.
C’est aussi simple que vous pouvez le voir, Isnull () Utilisé pour remplacer les valeurs NULL par la valeur par défaut que nous passons ici. Ce que j’ai fait ici est donc Si "commission_pct" ayant la valeur NULL, alors il remplacez-le par "Pas de Commission" texte que j'ai passé dans ISNULL () en tant que deuxième paramètre.
select last_name,
ISNULL(commission_pct,'No Commission') AS commission_pct
from employees;