如果文字为空则返回 null
returning null if literal is empty
select 名字和姓氏中间名首字母,如果有的话,但如果整个文字为空,我还需要 select null。如果文字为空,当前代码将返回空格,这会弄乱 selection from view .
t1.first
|| ' '
|| NVL2 (t1.middle, t1.middle || ' ', NULL)
|| t1.last
"SUPERVISOR"
这取自 select 列表,一切正常,除了当整个文字 selection 为空时,它返回空格而不是 NULL。有了这段代码,没有NULL字段,应该有几个NULL。
感谢任何帮助或建议。
我想使用 case 语句会起作用。您可能需要调整条件,因为我不确定这些值是空字符串还是空字符串。
CASE
WHEN t1.first is null and t1.last is null and t1.middle is null
THEN null
ELSE t1.first
|| ' '
|| NVL2 (t1.middle, t1.middle || ' ', NULL)
|| t1.last end
"SUPERVISOR"
只需将构建的字符串包装在对 TRIM() 的调用中,这将删除空格和 return NULL(如果仅此而已)。这里通过使用 NVL 检测是否为 null 并 returning 一个值来说明和证明:
with tbl as
(
select 'first' firstname, 'M' middlename, 'Last' lastname from dual
union
select NULL firstname, NULL middlename, NULL lastname from dual
)
select NVL(trim(firstname || ' ' || middlename || ' ' || lastname), 'NO NAME ENTERED') fullname from tbl;
FULLNAME
---------------
first M Last
NO NAME ENTERED
select 名字和姓氏中间名首字母,如果有的话,但如果整个文字为空,我还需要 select null。如果文字为空,当前代码将返回空格,这会弄乱 selection from view .
t1.first
|| ' '
|| NVL2 (t1.middle, t1.middle || ' ', NULL)
|| t1.last
"SUPERVISOR"
这取自 select 列表,一切正常,除了当整个文字 selection 为空时,它返回空格而不是 NULL。有了这段代码,没有NULL字段,应该有几个NULL。
感谢任何帮助或建议。
我想使用 case 语句会起作用。您可能需要调整条件,因为我不确定这些值是空字符串还是空字符串。
CASE
WHEN t1.first is null and t1.last is null and t1.middle is null
THEN null
ELSE t1.first
|| ' '
|| NVL2 (t1.middle, t1.middle || ' ', NULL)
|| t1.last end
"SUPERVISOR"
只需将构建的字符串包装在对 TRIM() 的调用中,这将删除空格和 return NULL(如果仅此而已)。这里通过使用 NVL 检测是否为 null 并 returning 一个值来说明和证明:
with tbl as
(
select 'first' firstname, 'M' middlename, 'Last' lastname from dual
union
select NULL firstname, NULL middlename, NULL lastname from dual
)
select NVL(trim(firstname || ' ' || middlename || ' ' || lastname), 'NO NAME ENTERED') fullname from tbl;
FULLNAME
---------------
first M Last
NO NAME ENTERED