Как заменить значения 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;