Isnull仍然返回null值

时间:2012-11-10 20:31:27

标签: sql

所以我试图从表2中选择已经外部连接到表1的字段1,并且我想使用isnull()命令将field1作为空白而不是null返回。但它仍然为我返回空值。这是我的查询:

select 
  field1 
from 
  table1 
  left outer join (select
                    (isNull(field1,''))field1, 
                    id2 
                   from table2)tb2 on table1.id1= tb2.id2

任何人都知道问题出在哪里?

3 个答案:

答案 0 :(得分:1)

您需要使用COALESCE()代替ISNULL()

答案 1 :(得分:1)

问题是您使用LEFT作为table1表。

如果table1包含的id1id2中的table2不符,则table2没有返回任何内容,因此转化不会发生。

您必须在选择的第一部分使用isNull

SELECT 
  isnull(field1,'') 
FROM table1 
  LEFT OUTER JOIN (
     SELECT field1, id2 FROM table2
  ) tb2 ON table1.id1= tb2.id2

答案 2 :(得分:1)

您不需要派生查询,只需进行正常连接:

select coalesce(field1,'') as field1 
from   table1 
left outer join table2
on table1.id1= tb2.id2

如果您在原始查询中使用COALESCE,则无法使用;在主SELECT声明中需要它。