空查询的SQL返回结果

时间:2018-07-30 13:52:09

标签: sql

所以我有一个简单的查询,如下所示;

  

从联系人的年龄中选择姓名> @age

我的问题是,我希望此查询始终返回一个值。如果没有结果,则SQL查询应该返回''(空白)。

我在末尾添加了UNION SELECT;

  

从联系人的年龄中选择姓名> @age UNION SELECT''

但是,这还会在有结果时添加空白记录。

2 个答案:

答案 0 :(得分:2)

IF NOT EXISTS(SELECT Name FROM Contact WHERE Age > @age)
BEGIN 
SELECT '' AS age
END
ELSE 
BEGIN 
SELECT Name FROM Contact WHERE Age > @age
END

这将检查结果集是否将返回,如果没有返回结果,请选择空白并命名字段年龄。

答案 1 :(得分:2)

我将在一个查询中完成所有操作:

select name
from contacts
where age > @age
union all
select v.name
from (values ('')) v.name
where not exists (select 1 from contacts where age > @age);

或使用CTE:

with t as (
      select name
      from contacts
      where age > @age
     )
select t.*
from t
union all
select v.name
from (values ('')) v(name)
where not exists (select 1 from t);

或者,使用left join的有趣方式:

select coalesce(c.name, v.name) as name
from (values ('')) v(name) left join
     contacts c
     on c.age > @age;