Логические выражения в списке выбора SQL
-
20-08-2019 - |
Вопрос
Я хочу создать SQL Select для выполнения модульного теста в MS SQL Server 2005.Основная идея заключается в следующем:
выберите 'Название теста', foo = 'Результат' из строки где baz = (некоторые критерии)
Идея заключается в том, что если значение столбца "foo" равно "Результату", то я бы получил значение true / 1;если это не так, я бы получил false /0.
К сожалению, T-SQL не нравится это выражение;он задыхается от знака равенства.
Есть ли какой-нибудь способ вычислить выражение в списке выбора SQL и получить возвращаемый результат?(Или какой-то другой способ достижения желаемого модульного тестирования?)
Редактировать:3 отличных ответа, все построены вокруг КЕЙСА.Я приму feihtthief, поскольку у него наименьшая репутация и, следовательно, он нуждается в ней больше всего.:-) Спасибо всем.
Решение
Используйте конструкцию case:
select 'Test Name',
case when foo = 'Result' then 1 else 0 end
from bar where baz = (some criteria)
Также смотрите документация по прецеденту MSDN Transact-SQL.
Другие советы
SELECT 'TestName',
CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar
WHERE baz = @Criteria
ПРИМЕР использования:
SELECT 'Test Name' [col1],
CASE foo
WHEN 'Result' THEN 1
ELSE 0
END AS [col2]
FROM bar
WHERE baz = (some criteria)
Вы также можете использовать:
select
'Test Name',
iif(foo = 'Result', 1, 0)
from bar
where baz = (some criteria)
Я знаю, что об этом спрашивали некоторое время назад, но я надеюсь, что это кому-то там поможет.