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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top