2015-12-05 79 views
0

我有一個非常簡單的SQL Server查詢,它不返回值。我希望看到我的查詢返回一個有空格的單行集,但是我經過很多時間嘗試和搜索後似乎無法得到它!所以,我一定是做錯了什麼,我真的有種具有發佈這麼簡單的事的啞巴,但我似乎無法得到它...SQL Server 2008強制SQL Server在Where子句返回無行時返回行

這裏的選擇:

從登錄選擇會話,其中會話=「123」

在我的表中的值「123」不會話列下存在...

所以,我需要這個簡單的查詢返回的空間作爲值並且不返回空行集合。

我已經試過ISNULL,COALESCE和鮮爲人知的IFNULL,都沒效果。有趣的是,如果我從查詢中刪除where子句,它會正確返回多行,它們中沒有一個是空值 - 就像SQL Server應該做的那樣,但是當我放入我的where子句中時,我會得到一個空行組。我不明白的是爲什麼!

你所有的SQL服務器大師在那裏,你能幫我開發一個查詢,返回一列中有一行有一個空格,當沒有返回集where子句時?

由於提前,

+0

我相信這是一個重複:http://stackoverflow.com/questions/7252797/return-a-single-row-if-no-rows-are-found – jjhavokk

+0

感謝jjhavokk,它類似於但不完全一樣 – Jay

回答

1

通常情況下,你想在客戶端直接查詢執行這種邏輯的,而不是。

但是,通過將您的查詢放入CTE中,您可以通過純SQL執行此操作。不知道CTE是否會運行兩次。

with cte as (
    select session 
    from Logins 
    where session = '123' 
) 
select session 
    from cte 
union all 
select ' ' as session 
where not exists (select null from cte) 
+0

很好的答案!它非常完美!我知道它通常不是服務器端類型的查詢,但在我的情況下,代碼在服務器上執行並呈現給客戶端。獎勵! – Jay