我正在尝试编写一个查询,从
SQL CE
数据库获取表信息,准备放入 C# 中,稍后导出到 XML。我需要将其中一列命名为“IDENT”并带有布尔值(显然,以表示它是否是标识列)。
为此,我检查 AUTOINC_SEED 列是否为空,如下所示:
select isnull(AUTOINC_SEED) as IDENT from information_schema.columns
但是,对于非标识列返回 TRUE,对于标识列返回 FALSE!有什么办法可以反转 select 语句中的布尔值吗?
编辑:我知道我可以做一个 case 语句来解决这个特定问题,但这让我对在 SQL 中反转布尔(位)值感到好奇。
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
如果您使用按位非运算符 (~),可能会更清晰。