2010-03-06 75 views
6

基本上我要改變的布爾值從表中選擇:如何更改SQL Server select查詢中的布爾值?

例如爲:

SELECT otherColumns, not ysnPending FROM table 

我需要一個列ysnPending = true,如果該值爲false &如果假值爲true。

是否有任何可用來更改布爾值的函數,或者我應該使用IIf或CASE ...?

+0

請顯示您的表格架構。 – 2010-03-06 06:02:55

+0

ysnPending是類型位 – Vikas 2010-03-06 06:03:39

+0

ysnPending也是可以爲空的 – Vikas 2010-03-06 06:05:52

回答

3

使用CASE,或者如果該位字段是不可爲空,你可以只從1

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

減(使用CASE可能導致更容易理解的代碼。)

如果ysnPending是空的,你分配給NOT的行爲是什麼?

+0

SELECT otherColumns,CASE WHEN ysnPending = NULL THEN 1 當ysnPending = 0 THEN 1 當ysnPending = 1 THEN 0 END FROM表 爲我工作! – Vikas 2010-03-06 06:14:43

+0

NULL映射爲True?好的,如果那是你需要的。 – 2010-03-06 06:19:42

+0

@Vikas - 您可能想要使用:「WHEN ysnPending IS NULL」而不是「WHEN ysnPending = NULL」。 – 2010-03-08 00:41:39

0

例如使用case語句:

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 

假設你想返回1時ysnPending爲NULL。

轉換爲位類型是爲了確保返回的列是BIT數據類型。如果將其忽略,它將返回一個INTEGER類型。 (這可能與您無關,具體取決於您將如何使用返回的結果集)。