Oracle-如何根据特定值更改字段值

时间:2019-12-11 17:21:13

标签: sql oracle

我有一个串联的全名字段:

CONCAT(CONCAT(CONCAT(u3.LAST_NAME, ', '), u3.FIRST_NAME), NVL(u3.MIDDLE_NAME, '')) AS TEAMLEAD_NAME

如果3个名称字段为空,则我希望记录不显示任何内容,即。 ''

但是,当所有3个字段均为空时,记录将显示,(来自last_name部分)。

我尝试在整个字段,所有3个单独的名称字段等周围放置一个NVL(x, ''),但是仍然返回,

编写此代码的最佳方法是什么,以便在所有3个名称字段都为空的情况下返回空白字段?

谢谢

2 个答案:

答案 0 :(得分:2)

尽管条件可以改善,但您可以快速完成此操作的一种方法:

CASE
    WHEN u3.LAST_NAME IS NULL AND u3.FIRST_NAME IS NULL AND u3.MIDDLE_NAME IS NULL THEN NULL
    ELSE CONCAT(CONCAT(CONCAT(u3.LAST_NAME, ', '), u3.FIRST_NAME), NVL(u3.MIDDLE_NAME, '')) 
END "TEAMLEAD_NAME"

答案 1 :(得分:1)

我认为这可以满足您的要求

NULLIF(u3.LAST_NAME || ', ' || u3.FIRST_NAME || ' ' || u3.MIDDLE_NAME, ',  ') AS TEAMLEAD_NAME

如果所有三个名称都缺失,则将值返回到NULL。我在名字和中间名之间添加了一个空格。