2012-06-10 69 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