2010-03-06 11 views
6

Temelde ben tablodan seçerek boole değerini değiştirmek istiyorum:SQL Server seçme sorgusundaki boolean değeri nasıl değiştirilir?

ör .:

SELECT otherColumns, not ysnPending FROM table 

değer değeri doğrudur & yanlış ise yanlış olup olmadığını ysnPending = true bir sütun gerekir.

Boole değerini değiştirmek için herhangi bir işlev var mı, yoksa IIf veya CASE kullanmalı mıyım?

+0

Lütfen masa şemasını gösterin. –

+0

ysnPending, Bit – Vikas

+0

ysnPending öğesinin türündedir. Ayrıca, – Vikas

cevap

3

kullanım CASE, bit alanı olmayan null ise veya sadece (daha anlaşılır koda sebep olabilir CASE kullanma.) 1.

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

çıkarma olabilir ysnPending null

ise NOT'a hangi davranışı atarsınız? Bir vaka ifadesini kullanarak

+0

SEÇ otherColumns, böyle olunca ysnPending = NULL SONRA 1 ZAMAN ysnPending = 0 SONRA 1 ysnPending = 1 THEN masanın GELEN 0 sonu benim için çalıştı! – Vikas

+0

NULL? Tamam, ihtiyacın olan buysa. –

+0

@Vikas - büyük olasılıkla şunu kullanmak istersiniz: "NE YSnPending IS NULL" yerine "ysnPending = NULL". –

0

Örnek:

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 

Eğer ysnPending NULL olduğunda 1 döndürdü istiyorum varsayar.

Bit/Yayın türü, döndürülen sütunun bir BIT veri türü olduğundan emin olmaktır. Eğer onu bırakırsanız, INTEGER tipi döner. (Bu, döndürülen sonuç kümesini tam olarak nasıl kullanacağınıza bağlı olarak, sizin için önemli olabilir veya olmayabilir).