¿Cómo reemplazar valores nulos con un texto?

Resuelto Rishabh Prasad asked hace 9 años • 6 respuestas

Necesito mostrar el empleado last_namey el monto de su comisión de la tabla de empleados en Oracle SQL, pero la condición es que si encuentra NULLvalor, necesito imprimir "Sin comisión" .
Para la primera parte escribí:

select last_name, commission_pct from employees;

Pero no puedo entender cómo reemplazar NULLlos valores con "Sin comisión" .

Rishabh Prasad avatar May 01 '15 13:05 Rishabh Prasad
Aceptado

Puedes usar casela expresión:

select last_name
     , case when commision_pct is null then 'No Commission' else commision_pct end    
from employees;

o coalesce:

select last_name
     , coalesce(commision_pct, 'No Commission')
from employees;

o nvl:

 select last_name
     , nvl(commision_pct, 'No Commission')
from employees;

PD: En caso de que commision_pctel tipo de datos no lo sea, varchartambién debes usar casto to_char.

potashin avatar May 01 '2015 06:05 potashin

Para oráculo

select last_name, nvl(commission_pct,'No Commission')
from employees;

Para SQL

select last_name, isnull(commission_pct,"No Commission") as commission_pct
    from employees;
Jaimin Soni avatar May 01 '2015 06:05 Jaimin Soni

Es tan simple como puede ver, Isnull() Se usa para reemplazar los valores NULL con el valor predeterminado que pasamos allí, así que lo que hice aquí es que si "commission_pct" tiene un valor NULL, lo reemplazará con el texto "Sin comisión". , que pasé ISNULL() como segundo parámetro.

  select last_name, 
    ISNULL(commission_pct,'No Commission') AS commission_pct
    from employees;
Chiragkumar Thakar avatar May 01 '2015 06:05 Chiragkumar Thakar

Otra alternativa, bastante sencilla y precisa:

nvl(to_char(commision_pct), 'No Commission') 

Dado que commision_pctes un tipo de datos NÚMERO , to_charlo convertirá explícitamente en una cadena.

Lalit Kumar B avatar May 01 '2015 06:05 Lalit Kumar B