2012-11-10 96 views
-1

所以我試圖從表2中選擇字段1,它已經被外部連接到表1,並且我想用isnull()命令將field1作爲空白而不是空值返回。但它仍然爲我返回空值。以下是我的查詢:Isnull仍然返回空值

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

任何人都知道問題在哪裏?

回答

1

的問題是,你正在使用的LEFTtable1

如果table1包含id1不匹配從table2id2再有就是從table2,因此轉換不會發生什麼都不會返回。

您必須在選擇的第一部分使用isNull

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

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

+0

+1和'ISNULL'這裏可能是'IFNULL'。 –

+0

既沒有工作,我試着coalesce(field1,''),它仍然返回null,ifnull不是mssql中的一個可識別的命令 – user974047

1

您不需要導出查詢,只是做一個正常的加入:

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

如果你正在使用你的原始查詢的COALESCE,那會不會管用;它將在主要的SELECT聲明中需要。

相關問題