SQL CE select 语句中的反转布尔(位)值

问题描述 投票:0回答:2

我正在尝试编写一个查询,从

SQL CE
数据库获取表信息,准备放入 C# 中,稍后导出到 XML。我需要将其中一列命名为“IDENT”并带有布尔值(显然,以表示它是否是标识列)。

为此,我检查 AUTOINC_SEED 列是否为空,如下所示:

select isnull(AUTOINC_SEED) as IDENT from information_schema.columns

但是,对于非标识列返回 TRUE,对于标识列返回 FALSE!有什么办法可以反转 select 语句中的布尔值吗?

编辑:我知道我可以做一个 case 语句来解决这个特定问题,但这让我对在 SQL 中反转布尔(位)值感到好奇。

sql sql-server-ce
2个回答
29
投票

SQL Server 中的克拉 (^) 是按位异或运算符。

由于

1 ^ 1
等于 0,并且
1 ^ 0
等于 1,你可以这样做:

SELECT (1 ^ [YourBitColumn]) as InverseBit

我也没有方便的 SQL CE,但由于 SQL CE 似乎有这个,我相信以下查询应该可以解决问题:

select (1 ^ AUTOINC_SEED) as IDENT from information_schema.columns

0
投票

如果您使用按位非运算符 (~),可能会更清晰。

© www.soinside.com 2019 - 2024. All rights reserved.