2015-12-05 81 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