我有一个串联的全名字段:
CONCAT(CONCAT(CONCAT(u3.LAST_NAME, ', '), u3.FIRST_NAME), NVL(u3.MIDDLE_NAME, '')) AS TEAMLEAD_NAME
如果3个名称字段为空,则我希望记录不显示任何内容,即。 ''
。
但是,当所有3个字段均为空时,记录将显示,
(来自last_name
部分)。
我尝试在整个字段,所有3个单独的名称字段等周围放置一个NVL(x, '')
,但是仍然返回,
。
编写此代码的最佳方法是什么,以便在所有3个名称字段都为空的情况下返回空白字段?
谢谢
答案 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
。我在名字和中间名之间添加了一个空格。