Boolesche Ausdrücke in SQL-Select-Liste
-
20-08-2019 - |
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.
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.