2015-12-05 2 views
0

У меня действительно простой запрос SQL Server, который не возвращает значение. Я хотел бы, чтобы мой запрос возвращал одну строку с пробелом в ней, но я не могу получить ее после много времени, пытаясь и ищу! Таким образом, я должен делать что-то не так, и я действительно чувствую себя глупым для того, чтобы оставлять такую ​​простую вещь, но я не могу показаться, чтобы получить его ...SQL Server 2008 - принудительно SQL Server возвращает строку, когда возвращаемое предложение не содержит строк

Вот Выбрать:

Выберите Session из логинов где Session = «123»

в моей таблице значение «123» не существует в колонке Session ...

Итак, мне нужен этот простой запрос, чтобы вернуть пространство как значение, а не возвращать пустой набор строк.

Я пробовал ISNULL, COALESCE и малоизвестный IFNULL, все это никак не повлияло.

Интересно, что если я удаляю предложение where из запроса, он возвращает несколько строк правильно, ни один из них в качестве нулей - как это делает SQL Server, но когда я помещаю в предложение where, я получаю пустой набор строк. Я не понимаю, почему!

Все, что вы, гуру SQL Server, не могли бы вы помочь мне разработать запрос, который возвращает один столбец с одной строкой, в которой есть пробел, когда нет возврата для предложения where?

Спасибо заранее,

+0

Я считаю, что это дубликат: http://stackoverflow.com/questions/7252797/return-a-single-row-if-no-rows-are-found – jjhavokk

+0

Благодаря jjhavokk, он похож но не совсем то же самое – Jay

ответ

1

Обычно, вы хотели бы выполнить такую ​​логику на стороне клиента, а не непосредственно в запросе.

Но вот один из способов сделать это в чистом SQL, поставив свой запрос в CTE. Не уверен, что 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