Как заменить значения null текстом?

мне нужно отобразить сотрудника last_name и их сумма комиссии от таблицы employees в Oracle SQL, но условие - если он столкнется NULL значение мне нужно для печати "Без Комиссии".
Для первой части я написал:

select last_name, commission_pct from employees;

но я не могу получить, как заменить NULL значения "Без Комиссии".

5 ответов


можно использовать case выражение:

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

или coalesce:

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

или nvl:

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

P. S. В случае 's не varchar вы должны использовать cast или to_char.


Для Oracle

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

для SQL

select last_name, isnull(commission_pct,"No Commission") as commission_pct
    from employees;

другая альтернатива, довольно простая и точная:

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

С, commision_pct is тип данных to_char явно преобразует его в строку.


выберите фамилия, декодировать (nvl (зарплатаcommission_pct,'0'),0, "комиссии", заработная платаcommission_pct) как COMM от сотрудников;


Это так просто, как вы можете видеть, Isnull () используется для замены нулевых значений на значение по умолчанию, которое мы передаем там, поэтому я сделал здесь, Если "commission_pct" имея нулевое значение, он заменит это на "Без Комиссии" текст, который я передал в ISNULL () в качестве 2-го параметра.

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