En mi tabla obtuve una columna cuyo valor es 0 o 1. Si esa columna es 0, obtengo el valor como 'no'; si 1 debería mostrar como 'sí' para todas las filas. ¿Cómo puedo hacer esto solo usando una declaración SQL? GraciasServidor SQL INLINE IF ELSE
Respuesta
SQL Server no tiene un if
declaración en línea, pero tiene una línea case
que se pueden utilizar para llevar a cabo la misma.
la caja tiene dos formas, una es:
select
case MyFlag
when 1 then 'YES'
when 0 then 'NO'
else 'OOPS'
end
from MyTable
donde se utiliza como un interruptor en lenguajes como C y el otro es:
select
case
when MyFlag = 1 then 'YES'
when MyFlag = 0 then 'NO'
-- when some unrelated condition...
else 'OOPS'
end
from MyTable
donde senquentially evalúa una lista de condiciones y devuelve el primero que se cumple.
P.S. La parte end
es obligatoria, y generalmente me olvido de eso. También es habitual que un simple case
stament a ser completamente inline, como
select (case MyFlag when 1 then 'Yes' else 'No' end) as MyFlagDesc
Algo como esto:
SELECT
CASE YourColumn
WHEN 0 THEN 'no'
WHEN 1 THEN 'yes'
ELSE 'nothing'
END
FROM dbo.YourTable
dos posibilidades:
(CASE WHEN condition1 THEN Value1 ELSE Value2 END)
o, la solución más completa:
(CASE value_to_check WHEN Value1 THEN Result1 [WHEN ... THEN ...] ELSE OtherResult END)
entiendo que esta pregunta (que aparece en la parte superior de los resultados de google para "sql server inline if") tiene 2 años, pero con SQL Server 2012, las respuestas están algo desactualizadas . También parece ser un duplicado de SQL inline if statement type question, pero esa pregunta (que es aún más antigua), tampoco tiene una respuesta actualizada.
En SQL Server 2012 puede utilizar el IIF
function:
IIF (boolean_expression, true_value, false_value)
Ejemplo:
SELECT IIF(someColumn = 1, 'yes', 'no')
mezclé tres IIF en una línea, tengo tres variables y quiero saber cuál es mayor que cero, pero sé que el orden de prioridad PersonHomePhoneID, PersonWorkPhoneID y PersonCellPhoneID
IIF(@PersonHomePhoneID > 0 , @PersonHomePhoneID, IIF(@PersonWorkPhoneID > 0 , @PersonWorkPhoneID, IIF(@PersonCellPhoneID > 0 , @PersonCellPhoneID, 0)))
La respuesta de la pregunta: ¿
IIF(column = 1 , 'yes', IIF(column = 0, 'no', ''))
- 1. if, else, else if y end Lua
- 2. IF - ELSE IF - Estructura ELSE en Excel
- 3. Servidor SQL: SI EXISTE; ELSE
- 4. if..else vs if() {return}
- 5. mysql IF Else Statement
- 6. ¿Por qué Javascript `if ... else if` no termina con` else`?
- 7. Analizando el algoritmo if-else if statement
- 8. Apache Tiles If/Else
- 9. Genshi: if/else
- 10. Declaraciones anidadas 'if' - 'else'
- 11. if-else structure
- 12. IF/ELSE Procedimiento almacenado
- 13. If Else in LINQ
- 14. Corto IF - declaración ELSE
- 15. Awk if else issues
- 16. else if-en Java
- 17. C# if else excepción
- 18. Cómo implementar if-else
- 19. if..else en ACTUALIZACIÓN (servidor SQL 2005 y/o Access 2007)
- 20. Cómo creo un If-Then-Else en T-SQL
- 21. consulta C# sql if() else() en función de resultados nulo?
- 22. switch case vs if else
- 23. if/else vs operador ternario
- 24. simple If/Else Razor Sintaxis
- 25. if..else personalizado plantilla etiqueta
- 26. Windows Batch Files: if else
- 27. plantilla django breve if-else
- 28. Erlang equivalente a if else
- 29. jsrender if-else usando {{= propName}}
- 30. Si-else-if frente mapa
upvoted, prefiero IIF frente CASE para condiciones booleanas simples, ya que es más aerodinámico – Breakskater
esto es agradable respuesta, gracias. –