Булевы выражения в SQL Выберите список - PullRequest
46 голосов
/ 31 января 2009

Я хочу создать SQL Select для проведения модульного теста в MS SQL Server 2005. Основная идея такова:

выберите «Имя теста», foo = «Результат» из бара где баз = (некоторые критерии)

Идея состоит в том, что если значение столбца "foo" равно "Результат", то я получу значение true / 1; если это не так, я бы получил false / 0.

К сожалению, T-SQL не нравится выражение; он задыхается от знака равенства.

Есть ли способ оценки выражения в списке выбора SQL и получения возвращаемого результата? (Или какой-то другой способ добиться модульного тестирования, который я хочу?)


РЕДАКТИРОВАТЬ: 3 здорово, ответы, все построено вокруг CASE. Я приму фейхта, потому что у него наименьшее количество повторений, и поэтому он нуждается в этом больше всего. :-) Спасибо всем.

Ответы [ 4 ]

77 голосов
/ 31 января 2009

Используйте конструкцию case:

select 'Test Name', 
    case when foo = 'Result' then 1 else 0 end 
    from bar where baz = (some criteria)

Также см. документацию MSDN Transact-SQL CASE .

18 голосов
/ 31 января 2009
SELECT 'TestName', 
    CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar 
WHERE baz = @Criteria
15 голосов
/ 31 января 2009

Использование CASE:

SELECT 'Test Name' [col1],
  CASE foo
    WHEN 'Result' THEN 1
    ELSE 0
  END AS [col2]
FROM bar
WHERE baz = (some criteria)
7 голосов
/ 12 сентября 2015

Вы также можете использовать:

select 
    'Test Name', 
    iif(foo = 'Result', 1, 0)
from bar 
where baz = (some criteria)

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

...