Expressions booléennes dans la liste de sélection SQL
-
20-08-2019 - |
Question
Je souhaite créer une sélection SQL pour effectuer un test unitaire dans MS SQL Server 2005. L'idée de base est la suivante:
sélectionnez 'Nom du test', foo = 'Résultat' du bar où baz = (certains critères)
L'idée étant que, si la valeur de & "foo &"; la colonne est " Résultat " ;, alors j'obtiendrais une valeur de true / 1; si ce n'est pas le cas, j'aurais faux / 0.
Malheureusement, T-SQL n'aime pas l'expression. il s'étouffe avec le signe d'égalité.
Existe-t-il un moyen d'évaluer une expression dans la liste de sélection SQL et d'obtenir un résultat renvoyable? (Ou un autre moyen de réaliser les tests unitaires que je veux?)
EDIT: 3 super réponses, toutes construites autour de CASE. J'accepterai le feihtthief car il a le moins de représentants et en a donc le plus besoin. :-) Merci à tous.
La solution
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 sur MSDN Transact-SQL CASE .
Autres conseils
SELECT 'TestName',
CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar
WHERE baz = @Criteria
Utiliser CASE:
SELECT 'Test Name' [col1],
CASE foo
WHEN 'Result' THEN 1
ELSE 0
END AS [col2]
FROM bar
WHERE baz = (some criteria)
Vous pouvez également utiliser:
select
'Test Name',
iif(foo = 'Result', 1, 0)
from bar
where baz = (some criteria)
Je sais que cette question a été posée il y a un certain temps, mais j'espère que cela aidera quelqu'un.