Expresiones booleanas en la lista de selección de SQL
-
20-08-2019 - |
Pregunta
Quiero crear un SQL Select para hacer una prueba unitaria en MS SQL Server 2005. La idea básica es esta:
seleccione 'Nombre de prueba', foo = 'Resultado' del bar donde baz = (algunos criterios)
La idea es que, si el valor de " foo " la columna es " Result " ;, entonces obtendría un valor de true / 1; si no es así, obtendría falso / 0.
Desafortunadamente, a T-SQL no le gusta la expresión; se ahoga en el signo igual.
¿Hay alguna forma de evaluar una expresión en la lista de selección de SQL y obtener un resultado retornable? (¿O alguna otra forma de lograr las pruebas unitarias que quiero?)
EDIT: 3 excelentes respuestas, todo construido alrededor de CASE. Acepto los feithtief's ya que tiene la menor representación y, por lo tanto, la necesita más. :-) Gracias a todos.
Solución
Utilice la construcción de caso:
select 'Test Name',
case when foo = 'Result' then 1 else 0 end
from bar where baz = (some criteria)
Consulte también la documentación de MSDN Transact-SQL CASE .
Otros consejos
SELECT 'TestName',
CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar
WHERE baz = @Criteria
CASO de uso:
SELECT 'Test Name' [col1],
CASE foo
WHEN 'Result' THEN 1
ELSE 0
END AS [col2]
FROM bar
WHERE baz = (some criteria)
También puedes usar:
select
'Test Name',
iif(foo = 'Result', 1, 0)
from bar
where baz = (some criteria)
Sé que esto se preguntó hace un tiempo, pero espero que esto ayude a alguien por ahí.