Frage

Ich mag einen SQL-Select erstellen einen Komponententest in MS SQL Server 2005. Die Grundidee zu tun, ist dies:

wählen Sie ‚Testname‘ foo = ‚Ergebnis‘ von Bar wo baz = (einige Kriterien)

Die Idee ist, dass, wenn der Wert der „foo“ Spalte „Result“ ist, dann würde ich einen Wert von true / 1 erhalten; wenn dies nicht der Fall, würde ich falsch erhalten / 0.

Leider T-SQL nicht mag den Ausdruck; es Drosseln auf dem Gleichheitszeichen.

Gibt es eine Möglichkeit einen Ausdruck in der SQL-Select-Liste der Auswertung und ein Mehrweg-Ergebnis zu bekommen? (Oder eine andere Art und Weise der Unit-Tests zu erreichen, was ich will?)


EDIT: 3 große, Antworten, die alle um CASE gebaut. Ich werde feihtthief die akzeptieren, wie er am wenigsten rep bekam ist, und es muss also am meisten. :-) Vielen Dank an alle.

War es hilfreich?

Lösung

Mit dem Fall Konstrukt:

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

Siehe auch die MSDN Transact-SQL-CASE Dokumentation .

Andere Tipps

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

Verwenden:

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

Sie können auch verwendet werden:

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

Ich weiß, das eine Weile zurück gefragt wurde, aber ich hoffe, dass dies hilft jemand da draußen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top