我是SQL的新手,这个问题困扰了我。我应该编写一个列出表中所有数据的SQL语句,但是如果列可能包含NULL值(在这种情况下只有一个字段为NULL),则短语“-NONE-”必须在该列中打印出来行。实验室暗示我必须使用一个或多个单行函数来完成此任务。
我们正在使用Oracle SQL Developer来测试脚本。我试图使用REPLACE函数,但我一直在收到错误。我尝试过使用NVAL,REPLACE和其他类似的功能,但我显然错误地使用了语法。例如:
SELECT *, REPLACE(manager_id, NULL, '-NONE-')
FROM departments;
^始终返回错误:缺少FROM语句
答案 0 :(得分:4)
您想要的功能是coalesce()
。这是ANSI标准功能。
假设你的变量是一个字符串:
SELECT d.*, COALESCE(manager_id, '-NONE-')
FROM departments d;
如果它不是字符串,则先转换它:
SELECT d.*, COALESCE(cast(manager_id as varchar(255)), '-NONE-')
FROM departments d;
答案 1 :(得分:0)
也许这可以帮到你:
select
*,
(case when manager_id is null then '-none-' else manager_id end) as manager_id_2
from
departments