Как мне вернуть константу из оператора sql?
Например, как мне изменить приведенный ниже код, чтобы "мое сообщение" возвращалось, если мое (логическое выражение) было истинным
if (my boolean expression)
"my message"
else
select top 1 name from people;
Я использую ms sql 2000


Ты пробовал:
select 'my message';
Кажется, это опускает условие?
У меня нет под рукой MSSQL, но проверьте синтаксис оператора CASE на случай, если я ошибся, а также я не уверен, должен ли ТОП 1 выходить за пределы корпуса, как я его здесь поместил, или должен входить внутрь ( ELSE TOP 1 имя). Идея такая:
SELECT TOP 1 CASE WHEN myexpression = 'true' THEN 'my message' ELSE name END
FROM people;
Здесь myexpression должно быть либо константами, либо относиться к таблицам, присутствующим в запросе, например
CASE WHEN address LIKE '%Michigan%'
где адрес - это еще одно поле в таблице люди.
PS: Нашел синтаксис MSSQL CASE здесь :-)
select "my message" as message
Вопрос не в том, как это сделать условно. :)
Я просто попробовал это в базе данных 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
select top 1 name
from people
where @MyParameter = whatever
union
select 'my message' as name
where @MyParameter != whatever
Все в одном заявлении.
Возможно, вы захотите включить имя поля, чтобы оно соответствовало условию else.