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.
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 .
SELECT 'TestName',
CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar
WHERE baz = @Criteria
Cas d'utilisation:
SELECT 'Test Name' [col1],
CASE foo
WHEN 'Result' THEN 1
ELSE 0
END AS [col2]
FROM bar
WHERE baz = (some criteria)
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.