我正在尝试编写一个查询,该查询从SQL CE
数据库获取表信息,准备放入c#,稍后将导出到XML。我需要其中一个列命名' IDENT'使用布尔值(显然表示它是否是标识列)。
为此,我正在检查AUTOINC_SEED列是否为空,如下所示:
select isnull(AUTOINC_SEED) as IDENT from information_schema.columns
但是,对于非标识列,它返回TRUE,对于标识列,返回FALSE!有没有办法在select语句中反转boolean值?
编辑:我知道我可以做一个案例陈述来解决这个特殊问题,但它让我对在SQL中反转布尔(位)值感到好奇。
答案 0 :(得分:17)
SQL Server中的克拉(^)是bitwise exclusive OR运算符。
由于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