web-dev-qa-db-fra.com

Comment remplacer les valeurs nulles par un texte?

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".

10
Rishabh Prasad

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.

26
potashin

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;
4
Jaimin Soni

sélectionnez Last_Name, decode (nvl (salaire commission_pct, '0'), 0, 'aucune commission, salaire commission_pct) comme COMM.

1
ajeesh

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.

1
Lalit Kumar B

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;
0
Chirag Thakar