我正在尝试编写一个查询,从SQL CE数据库获取表信息,准备放入c#,稍后导出到XML.我需要一个名为'IDENT'的列,其中包含一个布尔值(显然表示它是否是标识列).
为此,我正在检查AUTOINC_SEED列是否为null,如下所示:
select isnull(AUTOINC_SEED) as IDENT from information_schema.columns
但是,对于非标识列,它返回TRUE,对于标识列,返回FALSE!有没有办法扭转select语句中的布尔值?
编辑:我知道我可以做一个case语句来解决这个特殊问题,但它让我对在SQL中反转布尔(位)值感到好奇.
Lit*_*les 17
SQL Server中的克拉(^)是按位异或运算符.
因为1 ^ 1等于0,1 ^ 0等于1,你可以这样做:
SELECT (1 ^ [YourBitColumn]) as InverseBit
Run Code Online (Sandbox Code Playgroud)
我也没有SQL CE方便,但由于SQL CE似乎有这个,我相信以下查询应该可以解决这个问题:
select (1 ^ AUTOINC_SEED) as IDENT from information_schema.columns
Run Code Online (Sandbox Code Playgroud)