web-dev-qa-db-fra.com

Expressions booléennes dans la liste de sélection SQL

Je veux créer un SQL Select pour faire un test unitaire dans MS SQL Server 2005. L'idée de base est la suivante:

sélectionnez 'Test Name', foo = 'Result' dans la barre où baz = (certains critères)

L'idée étant que, si la valeur de la colonne "foo" est "Résultat", alors j'obtiendrais la valeur true/1; si ce n'est pas le cas, j'obtiendrais false/0.

Malheureusement, T-SQL n'aime pas l'expression; il étouffe le signe égal.

Existe-t-il un moyen d'évaluer une expression dans la liste de sélection SQL et d'obtenir un résultat renvoyable? (Ou une autre façon de réaliser les tests unitaires que je veux?)


EDIT: 3 réponses géniales, toutes construites autour de CASE. J'accepte les feihtthief car il a le moins de représentants et en a donc le plus besoin. :-) Merci à tout le monde.

48
Craig Walker

Utilisez la construction de cas:

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

Voir également la documentation MSDN Transact-SQL CASE .

78
feihtthief
SELECT 'TestName', 
    CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar 
WHERE baz = @Criteria
18
Joel Coehoorn

Cas d'utilisation:

SELECT 'Test Name' [col1],
  CASE foo
    WHEN 'Result' THEN 1
    ELSE 0
  END AS [col2]
FROM bar
WHERE baz = (some criteria)
15
John

Vous pouvez aussi utiliser:

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

Je sais que cela a été demandé il y a quelque temps, mais j'espère que cela aide quelqu'un là-bas.

7
Sebastian G