Espressioni booleane nell'elenco Seleziona SQL
-
20-08-2019 - |
Domanda
Voglio creare un SQL Select per eseguire un unit test in MS SQL Server 2005. L'idea di base è questa:
seleziona 'Nome test', foo = 'Risultato' dal bar dove baz = (alcuni criteri)
L'idea è che, se il valore di " foo " la colonna è " Risultato " ;, quindi otterrei un valore di true / 1; in caso contrario, diventerei false / 0.
Sfortunatamente, a T-SQL non piace l'espressione; soffoca sul segno uguale.
Esiste un modo per valutare un'espressione nell'elenco di selezione SQL e ottenere un risultato restituibile? (O qualche altro modo per raggiungere i test unitari che desidero?)
EDIT: 3 fantastici, risposte, tutto costruito attorno a CASE. Accetterò il feihtthief perché ha il minimo rappresentante e quindi ne ha più bisogno. :-) Grazie a tutti.
Soluzione
Usa il costrutto case:
select 'Test Name',
case when foo = 'Result' then 1 else 0 end
from bar where baz = (some criteria)
Vedi anche la documentazione MSDN Transact-SQL CASE .
Altri suggerimenti
SELECT 'TestName',
CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar
WHERE baz = @Criteria
Usa CASE:
SELECT 'Test Name' [col1],
CASE foo
WHEN 'Result' THEN 1
ELSE 0
END AS [col2]
FROM bar
WHERE baz = (some criteria)
Puoi anche usare:
select
'Test Name',
iif(foo = 'Result', 1, 0)
from bar
where baz = (some criteria)
So che è stato chiesto un po 'di tempo fa, ma spero che questo aiuti qualcuno là fuori.