如何用文本替换空值?
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
,您还应该使用 cast
或 to_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_pct
是 NUMBER 数据类型,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
我需要在 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
,您还应该使用 cast
或 to_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_pct
是 NUMBER 数据类型,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