Sql 如果联接未成功,是否返回自定义值?

Sql 如果联接未成功,是否返回自定义值?,sql,db2,Sql,Db2,我正在尝试执行一个select操作,当联接未成功时,该操作将返回一个空白“” (当使用空“”或“-”时 (在第列中遇到) 并在成功时返回列值。我正在使用这个案例,但直到现在才成功。谁能提出更好的查询 select a.EmpName,a.deptcode,(a.deptcode||' '||(SELECT CASE(a.deptcode) WHEN a.deptcode='-' THEN '' ELSE b.deptname)) as FULLDEPTNAME from table1 a LEF

我正在尝试执行一个select操作,当联接未成功时,该操作将返回一个空白“”

(当使用空“”或“-”时 (在第列中遇到)

并在成功时返回列值。我正在使用这个案例,但直到现在才成功。谁能提出更好的查询

select a.EmpName,a.deptcode,(a.deptcode||' '||(SELECT CASE(a.deptcode) WHEN a.deptcode='-' THEN '' ELSE b.deptname)) as FULLDEPTNAME from table1 a LEFT OUTER JOIN tableB b on a.deptcode=b.deptcode WHERE a.empNo=12;
(在列中遇到空白“”或“-”时)

如果联接不成功,则列值将为null(不是空白或连字符)

也许这样效果更好

  a.deptcode || '  ' || coalesce (b.deptname, '<missing>') as fulldeptname
a.deptcode | |“| |合并(b.deptname)”)为fulldeptname
(在列中遇到空白“”或“-”时)

如果联接不成功,则列值将为null(不是空白或连字符)

也许这样效果更好

  a.deptcode || '  ' || coalesce (b.deptname, '<missing>') as fulldeptname
a.deptcode | |“| |合并(b.deptname)”)为fulldeptname

谢谢,使用COALESCE比CASE更适合比较空值吗?如果是,它是否提供了任何性能优势?b.deptname为NULL的情况也应该适用。不确定对性能的影响(如果有什么需要的话,COALESCE应该更快,因为它“更简单”且不太通用),但COALESCE的打字时间更短(如果您记得如何拼写的话),而且更容易阅读。谢谢您的帮助。似乎使用Coalesce只会为null返回1个值。是否有一种方法可以检查空值&'-'like(如果是空值或'-',那么ColumnA或ColumnB)。注意else中的b列。在使用Coalesce时,我可以指定2个这样的结果吗?对于更复杂的情况,可以使用CASE/WHEN。为什么需要检查“-”?有些行也有“-”。我仍然希望使用COALESCE返回替代值(在“”COlumnA else ColumnB的情况下)。谢谢,使用COALESCE比使用case更适合比较空值吗?如果是,它是否提供了任何性能优势?b.deptname为NULL的情况也应该适用。不确定对性能的影响(如果有什么需要的话,COALESCE应该更快,因为它“更简单”且不太通用),但COALESCE的打字时间更短(如果您记得如何拼写的话),而且更容易阅读。谢谢您的帮助。似乎使用Coalesce只会为null返回1个值。是否有一种方法可以检查空值&'-'like(如果是空值或'-',那么ColumnA或ColumnB)。注意else中的b列。在使用Coalesce时,我可以指定2个这样的结果吗?对于更复杂的情况,可以使用CASE/WHEN。为什么需要检查“-”?有些行也有“-”。我仍然希望使用COALESCE返回替代值(在“”COlumnA else ColumnB的情况下)。