我正在尝试编写一个从SQL CE数据库获取表信息的查询,准备将其放入c#,稍后再导出为XML。我需要使用布尔值将其中一列命名为“IDENT”(以表示它是否是身份列)。
SQL CE
为此,我正在检查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,因此您可以执行以下操作:
1 ^ 1
1 ^ 0
SELECT (1 ^ [YourBitColumn]) as InverseBit
我也没有方便的SQL CE,但是由于SQL CE似乎具有此功能,因此我相信以下查询可以解决问题:
select (1 ^ AUTOINC_SEED) as IDENT from information_schema.columns