Microsoft SQL Server中是否有像MySQL中那样的布尔数据类型?
如果不是,MS SQL Server中的替代方案是什么?
发布于 2010-06-29 13:17:46
您可以使用BIT数据类型来表示布尔数据。BIT字段的值为1、0或null。
发布于 2010-06-29 13:19:07
您可能想要使用BIT数据类型,可能设置为NOT NULL
bit (Transact-SQL)
可以接受值1、0或NULL的整数数据类型。
SQL Server数据库引擎优化了位列的存储。如果表中有8个或更少的位列,则将这些列存储为1个字节。如果有9到16位的列,这些列将存储为2个字节,依此类推。
字符串值TRUE和FALSE可以转换为位值: TRUE转换为1,FALSE转换为0。
发布于 2014-12-03 01:03:48
您正在寻找bit。它存储1或0(或NULL)。
或者,您可以使用字符串'true'和'false'代替1或0,如下所示-
declare @b1 bit = 'false'
print @b1 --prints 0
declare @b2 bit = 'true'
print @b2 --prints 1此外,任何非0值(无论是正的还是负的)都会计算为(或在某些情况下转换为) 1。
declare @i int = -42
print cast(@i as bit) --will print 1, because @i is not 0请注意,SQL Server使用三值逻辑(true、false和NULL),因为NULL可能是bit数据类型的值。以下是相关的真值表-

关于三值逻辑的更多信息-
Example of three valued logic in SQL Server
http://www.firstsql.com/idefend3.htm
https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/
https://stackoverflow.com/questions/3138029
复制相似问题