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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top