Expressões booleanas em SQL Select lista
-
20-08-2019 - |
Pergunta
Eu quero criar um SQL Select para fazer um teste de unidade em MS SQL Server 2005. A idéia básica é esta:
selecione 'Nome do Teste', foo = 'Resultado' de bar onde baz = (alguns critérios)
A idéia é que, se o valor da coluna "foo" é "Resultado", então eu obter um valor de true / 1; se não for, eu ia ficar false / 0.
Infelizmente, T-SQL não gosta da expressão; ele se engasga com o sinal de igual.
Existe alguma maneira de avaliar uma expressão na lista de seleção SQL e obter um resultado retornáveis? (Ou alguma outra forma de alcançar a unidade de teste que eu quero?)
EDIT: 3 grande, respostas, todo construído em torno de CASE. Eu vou aceitar de feihtthief como ele tem o mínimo representante e, portanto, precisa dele mais. :-) Obrigado a todos.
Solução
Use a construção caso:
select 'Test Name',
case when foo = 'Result' then 1 else 0 end
from bar where baz = (some criteria)
Veja também a documentação MSDN Transact-SQL CASE .
Outras dicas
SELECT 'TestName',
CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar
WHERE baz = @Criteria
Caso de Uso:
SELECT 'Test Name' [col1],
CASE foo
WHEN 'Result' THEN 1
ELSE 0
END AS [col2]
FROM bar
WHERE baz = (some criteria)
Você também pode usar:
select
'Test Name',
iif(foo = 'Result', 1, 0)
from bar
where baz = (some criteria)
Eu sei que isto foi solicitado um tempo atrás, mas eu espero que isso ajude alguém lá fora.