Reverse boolean (bit) value in SQL CE select statement

别来无恙 提交于 2019-11-30 04:41:25

问题


I am trying to write a query that gets table information from a SQL CE database, ready to be put in c#, later to be exported to XML. I need one of the columns to be named 'IDENT' with a boolean value (to represent whether or not it is the identity column, obviously).

For this, I am checking if the AUTOINC_SEED column is null, as follows:

select isnull(AUTOINC_SEED) as IDENT from information_schema.columns

However, this returns TRUE for non-identity columns and FALSE for identity columns! Is there any way to reverse the boolean value inside the select statement?

Edit: I'm aware I could do a case statement to solve this particular problem, but it got me curious about inverting boolean (bit) values in SQL.


回答1:


The carat (^) in SQL Server is the bitwise exclusive OR operator.

Since 1 ^ 1 equals 0, and 1 ^ 0 equals 1, you can just do:

SELECT (1 ^ [YourBitColumn]) as InverseBit

I don't have SQL CE handy either, but since SQL CE appears to have this, I believe the following query should do the trick:

select (1 ^ AUTOINC_SEED) as IDENT from information_schema.columns


来源:https://stackoverflow.com/questions/15339297/reverse-boolean-bit-value-in-sql-ce-select-statement

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!