如何用文本替换空值?

How to replace null values with a text?

我需要在 Oracle SQL 中显示员工 last_name 和他们来自员工 table 的佣金金额,但条件是如果遇到 NULL 我需要的值打印 "No Commission".
对于第一部分,我写道:

select last_name, commission_pct from employees;

但我不知道如何用 "No Commission".

替换 NULL

您可以使用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。如果 commision_pct 的数据类型不是 varchar,您还应该使用 castto_char

对于甲骨文

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

对于SQL

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

就像你看到的一样简单,Isnull() 用于将 NULL 值替换为我们传递到那里的默认值,所以我在这里做的是 If "commission_pct" 具有 NULL 值,然后它将替换为 "No Commission" 文本,我已将其作为第二个参数传入 ISNULL() .

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

另一种选择,非常简单和精确:

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

由于 commision_pctNUMBER 数据类型,to_char 将明确地将其转换为字符串。

select Last_Name, decode(nvl(salarycommission_pct,'0'),0,'No Commission',salarycommission_pct) as COMM 来自员工;

如果条件如下:

Select job_id, job_title, employee_id
from jobs join job_history using (job_id);

并显示所有在那里工作的 employee_id,如果不是,则替换为 varchar