基本上我要改變的布爾值從表中選擇:如何更改SQL Server select查詢中的布爾值?
例如爲:
SELECT otherColumns, not ysnPending FROM table
我需要一個列ysnPending = true,如果該值爲false &如果假值爲true。
是否有任何可用來更改布爾值的函數,或者我應該使用IIf或CASE ...?
基本上我要改變的布爾值從表中選擇:如何更改SQL Server select查詢中的布爾值?
例如爲:
SELECT otherColumns, not ysnPending FROM table
我需要一個列ysnPending = true,如果該值爲false &如果假值爲true。
是否有任何可用來更改布爾值的函數,或者我應該使用IIf或CASE ...?
使用CASE
,或者如果該位字段是不可爲空,你可以只從1
SELECT
otherColumns,
(1 - ysnPending) -- NOT ysnPending
FROM table
減(使用CASE
可能導致更容易理解的代碼。)
如果ysnPending
是空的,你分配給NOT
的行爲是什麼?
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
NULL映射爲True?好的,如果那是你需要的。 – 2010-03-06 06:19:42
@Vikas - 您可能想要使用:「WHEN ysnPending IS NULL」而不是「WHEN ysnPending = NULL」。 – 2010-03-08 00:41:39
例如使用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類型。 (這可能與您無關,具體取決於您將如何使用返回的結果集)。
請顯示您的表格架構。 – 2010-03-06 06:02:55
ysnPending是類型位 – Vikas 2010-03-06 06:03:39
ysnPending也是可以爲空的 – Vikas 2010-03-06 06:05:52