2010-03-06 19 views
6

Básicamente quiero para alterar el valor booleano seleccionar de la tabla:¿Cómo alterar el valor booleano en SQL Server select query?

ej .:

SELECT otherColumns, not ysnPending FROM table 

necesito una columna ysnPending = true si el valor es falso & falsa si el valor es cierto.

¿Hay alguna función disponible para alterar el valor booleano o debo usar IIf o CASE ...?

+0

Por favor, muestre el esquema de su tabla. –

+0

ysnPending es del tipo Bit – Vikas

+0

ysnPending también es nulable – Vikas

Respuesta

3

uso CASE, o si el campo de bits no es anulable usted podría restar de 1.

SELECT 
    otherColumns, 
    (1 - ysnPending) -- NOT ysnPending 
FROM table 

(Usando CASE podría dar lugar a un código más comprensible.)

Si ysnPending es anulable, ¿Qué comportamiento asigna al NOT?

+0

SELECT otherColumns, CASO CUANDO ysnPending = NULL ENTONCES CUANDO 1 ysnPending = 0 ENTONCES CUANDO 1 ysnPending = 1 y luego 0 Fin FROM tabla trabajó para mí! – Vikas

+0

Mapas NULL a True? OK si eso es lo que necesitas. –

+0

@Vikas: probablemente desee utilizar: "CUANDO ysnPending ES NULO" en lugar de "CUANDO ysnPending = NULL". –

0

ejemplo usando una declaración de caso:

create table table1 (id int not null, ysnPending bit null) 
insert table1 values (1, 1) 
insert table1 values (2, null) 
insert table1 values (3, 0) 

select id, cast((case when ysnPending = 1 then 0 else 1 end) as bit) as Not_ysnPending from table1 

supone que desea 1 regresaron cuando ysnPending es NULL.

El tipo de conversión a bit es para asegurarse de que la columna devuelta tenga el tipo de datos BIT. Si lo deja fuera, devolverá un tipo INTEGER. (Esto puede o no ser importante para usted, dependiendo de cómo exactamente va a utilizar el conjunto de resultados devuelto).

Cuestiones relacionadas