2012-06-10 34 views
0

NULL我有以下SQL语句:如何返回任何结果,如果值是SQL

SELECT r.NAME AS REGIONNAME, s.NAME AS STADTNAME, f.ADRESSE AS STRASSEADRESSE 
FROM REGION r 
LEFT OUTER JOIN STADT s ON s.REGION_ID = r.ID 
LEFT OUTER JOIN GEBAEUDE f ON s.ID = f.STADT_ID 
ORDER BY r.NAME 

如果我使用SQL Server 2008 Management Studio中这一说法,它就像我想要的。 输出是:

Picture http://i49.tinypic.com/21bodih.png

在我和Xcode工作的客户端。我的问题是我在TableView中返回REGIONNAMESTADTNAMESTRASSENADRESSE。如果数据库中的STRASSENADRESSE值是NULL,则Xcode返回一个空行。

如果STRASSENADRESSE的值为NULL,那么Web服务只返回REGIONNAMESTADTNAME是否可能?如果是的话,我该怎么做。

THX提前

+0

我发布了我的查询。看看我的问题 – Bashud

+0

你想返回一个空字符串,或者你不想返回STRASSENADRESSE列?我的意思是,如果STRASSENADRESSE值为空,你只想返回两列吗?在这种情况下,你必须返回两个表格,一个是3列,另一个是2列。确认是否是你想要的,我将发布查询 –

+0

是的,如果STRASSENADRESSE值为空,并且STRASSENADRESSE有一个值,我想返回两列,并且我想返回3列。你是对的。 – Bashud

回答

1

此查询将返回3列

SELECT r.NAME AS REGIONNAME, s.NAME AS STADTNAME, f.ADRESSE AS STRASSEADRESSE FROM REGION r LEFT OUTER JOIN STADT s ON s.REGION_ID = r.ID LEFT OUTER JOIN GEBAEUDE f ON s.ID = f.STADT_ID ORDER BY r.NAME WHERE f.ADRESSE IS NOT NULL

这一个只返回两个值,当STRASSEADRESSE值null

SELECT r.NAME AS REGIONNAME, s.NAME AS STADTNAME, FROM REGION r LEFT OUTER JOIN STADT s ON s.REGION_ID = r.ID LEFT OUTER JOIN GEBAEUDE f ON s.ID = f.STADT_ID ORDER BY r.NAME WHERE f.ADRESSE IS NULL

你必须收到他们在两个不同的TableView中,一个是3列,另一个是2列

+0

thx你这样做,但我怎么能在SQLCommand中使用2个查询? – Bashud

+0

您可以在SQLCommand中执行多个查询。你可以在这里看到一个例子。 http://ryangaraygay.com/blog/post/Multiple-Select-Queries-in-one-SqlCommand.aspx 因此,请将此示例更改为您的代码:)如果这适用于您,请不要忘记勾选我的答案为正确的! (对不起英语不好) –

2

您可以使用内置的ISNULL() SQL函数返回一个空字符串,或者一些其他的默认值。

SELECT 
r.NAME AS REGIONNAME, 
s.NAME AS STADTNAME, 
ISNULL(f.ADRESSE,'') AS STRASSEADRESSE 
FROM 
REGION r LEFT OUTER JOIN 
STADT s ON s.REGION_ID = r.ID LEFT OUTER JOIN 
GEBAEUDE f ON s.ID = f.STADT_ID 
ORDER BY 
r.NAME 
+0

但是这总是会返回3列。我认为OP想要有条件地返回2或3列。 –

1

您可以检查是否 'ADRESSE' 为空或不..

您可以使用WHEN ANS IS NULL功能..

SELECT 
r.NAME AS REGIONNAME, 
s.NAME AS STADTNAME, 
CASE f.ADDRESS 
    WHEN f.ADRESSE IS NULL THEN '' 
    ELSE f.ADDRESS 
END AS STRASSEADRESSE 
FROM 
REGION r LEFT OUTER JOIN 
STADT s ON s.REGION_ID = r.ID LEFT OUTER JOIN 
GEBAEUDE f ON s.ID = f.STADT_ID 
ORDER BY 
r.NAME 

检查该链接

http://msdn.microsoft.com/en-us/library/ms181765.aspx