8

我正在尝试编写一个从SQL CE数据库中获取表信息的查询,准备好放入 c# 中,然后导出到 XML。我需要将其中一列命名为“IDENT”,并带有一个布尔值(显然表示它是否是标识列)。

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

select isnull(AUTOINC_SEED) as IDENT from information_schema.columns

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

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

4

1 回答 1

23

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
于 2013-03-11T13:52:37.307 回答