SQL CE select语句中的反向布尔(位)值

Posted

技术标签:

【中文标题】SQL CE select语句中的反向布尔(位)值【英文标题】:Reverse boolean (bit) value in SQL CE select statement 【发布时间】:2013-03-11 13:03:03 【问题描述】:

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

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

select isnull(AUTOINC_SEED) as IDENT from information_schema.columns

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

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

【问题讨论】:

您尝试过我的 SQL Server Compact 脚本 API,可以为您获取所有相关的架构信息吗? @ErikEJ 你能给我一个链接吗? 您可以在exportsqlce.codeplex.com找到它 【参考方案1】:

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

【讨论】:

抱歉,刚刚才有机会尝试。是的,克拉起作用了——尽管我确实必须用 0 替换 1,就像 select (0 ^ AUTOINC_SEED) as IDENT 一样。与其说我需要帮助,不如说我很好奇。毕竟,它可以通过 case 声明来解决 - 但感谢您回答问题并满足我的好奇心! 看起来 tilda 成功了 (~) ***.com/a/177893/1579626 另见 msdn.microsoft.com/en-us/library/ms173468.aspx

以上是关于SQL CE select语句中的反向布尔(位)值的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL Server 中的 SELECT 中的布尔值转换为 C# 中的布尔值?

SQL 在多个表中选择 EXIST 作为布尔值(位)

PL/SQL流程控制

针对 LINQ To SQL 查询中的位字段评估布尔值

sql查询中case语句中的布尔值

SQL:根据 B 列中的布尔值更改 SELECT 查询以在 A 列上显示不同的值