2010-03-27 8 views
5

Tengo una tabla que tiene una columna llamada Direct de tipo char (1). Sus valores son 'Y' o 'N' o NULL. Estoy creando una vista y quiero que el valor se transforme en 0 o 1 de tipo bit. En este momento es del tipo INT. ¿Cómo voy a hacer esto?transformando de 'S' o 'N' al bit

A continuación se presenta el código:

CASE WHEN Direct = 'Y' THEN (SELECT 1) 
WHEN Direct <> 'Y' THEN (SELECT 0) END AS DirectDebit 

EDIT: ¿Cómo puedo hacer que el tipo de la columna es de tipo BIT?

+0

¿Quieres NULL que ser convertido a 0? – dan04

Respuesta

7

Esto obtendrá su granito de arena ..

CAST(CASE WHEN Direct = 'Y' THEN 1 ELSE 0 END AS BIT) AS DirectDebit 
4

ver si esto funciona:

SELECT CASE WHEN Direct = 'Y' THEN 1 ELSE 0 END FROM YOURTABLE 
+0

wow eres rápido! ¿Cómo puedo asegurarme de que la columna sea de tipo bit? – Riz

+0

bit (Transact-SQL): un tipo de datos entero que puede tomar un valor de 1, 0 o NULO. De esta manera, creo que los valores que obtienes de la consulta anterior se ajustan correctamente en una columna de tipo bit. –

+1

sin convertir/convertir la respuesta de CASE no puede estar seguro del tipo que devolverá – CResults

1
SELECT CASE Direct 
WHEN 'Y' THEN '1' 
WHEN 'N' THEN '0' 
ELSE '0' 
END as DirectDebit 
FROM TableName 

... debería funcionar.

Cuestiones relacionadas