2010-06-28 11 views

Respuesta

24

Uso CAST/CONVERT definir explícitamente el tipo de datos:

SELECT CAST (CASE 
       WHEN LOWER(h.outofserv) = 'y' THEN 1 
       ELSE 0 
      END AS BIT) AS OOS 
FROM HISTORY h 
+1

¡Perfecto! Gracias. –

4

que sólo debe utilizar CAST(1 as bit) y CAST(0 as bit) en lugar de 1 y 0:

SELECT (CASE WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y' 
      THEN CAST(1 AS bit) 
      ELSE CAST(0 AS bit) 
     END) AS OOS 
FROM HISTORY 
+0

Esta fue la mejor solución para mi caso de uso, gracias. – Yass

+0

@Yass: ¡De nada! – Oleg

2

Aquí está una manera de conseguir la salida de tipo de datos BIT deseado y con un código un poco más limpio usando:

  • superior()
  • fundido()

    SELECT CAST (CASE
    CUANDO SUPERIOR (History.OutofServ) = 'Y' ENTONCES 1
    ELSE 0 FIN AS BIT) AS OOS de la historia

Espero que eso ayude.

+0

+1 para el bit 'superior' – Earlz

Cuestiones relacionadas