2010-03-06 5 views
6

Fondamentalement, je veux modifier la valeur booléenne sélection de la table:Comment modifier la valeur booléenne dans SQL Server sélectionnez requête?

.: par exemple

SELECT otherColumns, not ysnPending FROM table 

je besoin d'une colonne ysnPending = true si la valeur est fausse & false si la valeur est vrai.

Y at-il une fonction disponible pour modifier la valeur booléenne ou je devrais utiliser IIf ou CASE ...?

+0

Veuillez montrer le schéma de votre table. –

+0

ysnPending est du type Bit – Vikas

+0

ysnPending est également Nullable – Vikas

Répondre

3

utilisation CASE, ou si le champ de bits est non annulable vous pourriez juste soustrayez 1.

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

(En utilisant CASE pourrait conduire à un code plus compréhensible.)

Si ysnPending est annulable, quel comportement attribuez-vous à NOT?

+0

SELECT otherColumns, CASE WHEN ysnPending = NULL ALORS 1 QUAND ysnPending = 0 ALORS 1 QUAND ysnPending = 1 ALORS 0 Fin FROM table a travaillé pour moi! – Vikas

+0

NULL correspond à True? OK si c'est ce dont vous avez besoin. –

+0

@Vikas - vous voulez probablement utiliser: "WHEN ysnPending IS NULL" au lieu de "WHEN ysnPending = NULL". –

0

Exemple utilisant une instruction de cas:

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 

Suppose que vous souhaitez 1 retourné lorsque ysnPending est NULL. Le type cast to bit est de s'assurer que la colonne retournée est d'un type de données BIT. Si vous l'omettez, il retournera un type INTEGER. (Ceci peut ou peut ne pas vous importer, selon comment exactement vous allez utiliser le jeu de résultats retourné).