Вопрос

Я хочу создать 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)

Я знаю, что об этом спрашивали некоторое время назад, но я надеюсь, что это кому-то там поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top