-1

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

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

有谁知道问题出在哪里?

4

3 回答 3

1

您需要使用COALESCE()而不是ISNULL()

于 2012-11-10T20:33:48.063 回答
1

问题是您LEFTtable1.

如果table1包含与id1不匹配的一个,则不会id2从该table2返回任何内容table2,因此不会发生转换。

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

SELECT 
  isnull(field1,'') 
FROM table1 
  LEFT OUTER JOIN (
     SELECT field1, id2 FROM table2
  ) tb2 ON table1.id1= tb2.id2
于 2012-11-10T20:47:20.163 回答
1

您不需要派生查询,只需执行普通连接:

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

如果您COALESCE在原始查询中使用 ,那将无法正常工作;SELECT在主要声明中将需要它。

于 2012-11-10T20:55:02.427 回答