Как вы возвращаете константу из оператора SQL? - PullRequest
13 голосов
/ 20 ноября 2008

Как мне вернуть константу из оператора SQL?

Например, как бы я изменил приведенный ниже код, чтобы «мое сообщение» вернулось бы, если бы мое (логическое выражение) было истинным

if (my boolean expression)
 "my message"
else
 select top 1 name from people;

Я использую MS SQL 2000

Ответы [ 5 ]

22 голосов
/ 20 ноября 2008

Вы пробовали:

select 'my message';
7 голосов
/ 20 ноября 2008
select "my message" as message
4 голосов
/ 20 ноября 2008

У меня нет MSSQL под рукой, но проверьте синтаксис оператора CASE на случай, если я его неправильно понял, а также я не уверен, должен ли TOP 1 выходить за рамки случая, как я это изложил здесь, или если он должен Зайдите внутрь (ЕЩЕ ТОП 1 имя). Идея такова:

SELECT TOP 1 CASE WHEN myexpression = 'true' THEN 'my message' ELSE name END
FROM people;

Здесь myexpression должно быть либо константой, либо связано с таблицами, представленными в запросе, например

CASE WHEN address LIKE '%Michigan%'

где адрес - это другое поле в таблице people.

PS: нашел синтаксис MSSQL CASE здесь : -)

0 голосов
/ 20 ноября 2008
select top 1 name 
from people
where @MyParameter = whatever

union

select 'my message' as name
where @MyParameter != whatever

Все в одном утверждении.

0 голосов
/ 20 ноября 2008

Я только что попробовал это в базе данных AdventureWorks, и она работает

Use AdventureWorks

Declare @myVar int
SET @myVar = 1

if (@myVar = 2)

     select top 2 * from HumanResources.Department

else

     select top 1 * from HumanResources.Department
...