2011-12-11 17 views
8

Tengo una tabla que tiene varias columnas. El valor de una columna es 0 o 1. Quiero escribir una consulta que devuelva "Hola" si el valor fue 0, o "Adiós" si fue 1. ¿Cuál es la forma adecuada de escribir esta consulta?Reemplazo de valor condicional en SQL Server

Respuesta

13

Utilice un CASE expression

SELECT CASE YourCol 
     WHEN 0 THEN 'Hello' 
     WHEN 1 THEN 'Bye' 
     END AS SomeAlias 
FROM YourTable 
+0

me ganó por segundo ... 1 para una fácil lectura. –

+0

Por favor, ayúdenme. Si quiero seleccionar varias columnas. Por ejemplo, seleccione ID, YourCol, Nombre. (YourCol es esa columna que fue expresión de casos seleccionados). – Tavousi

1

Si elige Multi/todas las columnas, por favor tratar con a continuación:

SELECT Column1, Column2, -- Put other column name here 
     CASE TargetColumnName 
     WHEN 0 THEN 'Hello' 
     WHEN 1 THEN 'Bye' 
     END AS TargetAliasColumnName 
FROM YourTableName 
+0

¿El nombre "TargetColumnName" es un nombre intrínseco de SQL, por lo que SQL sabe que se refiere a "Column1, Column2, ..."? – Hans

+0

Puede escribir el nombre de columna que desee decir que su columna es Column2 en lugar de TargetColumnName - He escrito TargetColumnName en mi respuesta porque puede haber muchos nombres de columna en su declaración SELECT y necesita especificar el nombre de columna requerido en 'CASE' expresión en SQL, espero que tengas mi punto. Gracias –

+0

Así que está diciendo "TargetColumnName" es el marcador de posición para uno de Column1, Column2. Pensé que codificabas varias columnas y realizaste la tarea de reemplazo condicional para todas las columnas seleccionadas en lugar de solo una. Si ese es el caso, ¿cuál es la diferencia entre la operación en una sola columna, como se muestra en la respuesta de Martin Smith y la de varias columnas, como parece sugerir que su código funcionaría? – Hans

Cuestiones relacionadas