在Microsoft SQL Server中有布尔数据类型吗?

如果不是,在MS SQL Server的替代方案是什么?


当前回答

你可能想使用BIT数据类型,可能设置为NOT NULL:

引用MSDN文章:

位(transact - sql) 一种整数数据类型,其值可以为1、0或NULL。 SQL Server数据库引擎优化位列的存储。如果一个表中有8个或更少的位列,列存储为1字节。如果有9到16位的列,列存储为2字节,依此类推。 字符串值TRUE和FALSE可以转换为位值:TRUE转换为1,FALSE转换为0。

其他回答

你正在寻找一点。它存储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(或在某些情况下转换为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数据类型的一个可能值。以下是相关的真值表

更多关于三值逻辑的信息

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/

使用Bit数据类型。在本地T-SQL中处理它时,它的值为1和0

使用BIT数据类型表示布尔数据。BIT字段的值为1,0或NULL。

create table <tablename> (
    <columnName> bit
)

除非你想要一个三路布尔值,你应该像这样添加NOT NULL DEFAULT 0:

create table <tablename> (
    <columnName> bit not null default 0
)

SQL Server使用Bit数据类型

在SQL Server中可以使用Bit DataType来存储布尔数据。