如何在SQL Server中创建是/否布尔值字段?


Answers:


441

相当于一个BIT字段。

在中SQL使用01设置位字段(就像Access中的是/否字段一样)。在Management Studio中,它显示为false / true值(至少在最新版本中)。

通过ASP.NET访问数据库时,它将字段显示为布尔值。


3
而且,如果您在Access数据库中链接表,则true的值为-1,false的值为0。至少在Access 2003中。(这是我方便使用的与客户的MSSQL数据库连接的版本)。
Henrik Erlandsson

2
请注意,它并不完全等效。如果标量函数返回了一点,您仍然需要测试它是否为0或1。例如,dbo.IsReturnsBit(value)= 1
Darren Griffith

@ D-Money:是的,但是仅在要在条件中使用该值时才需要进行比较。如果在结果中使用该值,则不应进行比较。
Guffa 2015年

再MGT工作室,如果你是拷贝+在您粘贴数据需要把它作为真/假也,而不是1或0
gorlaz

110

BIT数据类型是通常用于存储boolean的值(0false1true)。


1
BIT在SQL标准中指定的?我很难找到它。我能看到的最接近的是“布尔类型”。
ass

1
您是否担心位和布尔的语义不同?
Darth Egregious


20

您可以使用该BIT字段。

要将BIT列添加到现有表中,SQL命令如下所示:

ALTER TABLE table_name ADD yes_no BIT

如果要创建新表,可以执行以下操作:CREATE TABLE table_name (yes_no BIT)


19

您可以使用数据类型 bit

插入的大于0的值将存储为“ 1”

插入的小于0的值将存储为“ 1”

插入为“ 0”的值将存储为“ 0”

这适用于MS SQL Server 2012 Express


1
您确定有关值小于0的语句吗?
BiLaL 2015年

3
@BiLaL这是大多数语言中的常见行为。0为假,任何非0数字为真。-1作为true的默认值也是很常见的,因为在带符号的二进制文件中,每个位都设置为1。如今,将1作为true的默认值(仅设置最低有效位)是很常见的。
CJ丹尼斯

16

已经有回答说使用Bit。我将在这些答案中添加更多内容。

您应该使用来表示布尔值。

来自MSDN文章的评论。

该位的值可以为1、0或NULL。

SQL Server数据库引擎优化了位列的存储。如果表中有8位或更少的位列,则这些列将存储为1个字节。如果存在9到16位列,则这些列将存储为2个字节,依此类推。

可以将字符串值TRUE和FALSE转换为位值:将TRUE转换为1,将FALSE转换为0。

转换为位会将任何非零值提升为1。

参考

注意:优良作法是仅将数据类型的值保持为1和0 NOT NULL

由于位的值为1、0和NULL。参见真值表。因此,请相应地计划值。通过为位数据类型允许使用NULL值,可能会增加混乱。

在此处输入图片说明

参考


15

创建表时的样本用法:

[ColumnName]     BIT   NULL   DEFAULT 0

12

您可以使用该BIT字段

要创建新表:

CREATE TABLE Tb_Table1
(
ID              INT,
BitColumn       BIT DEFAULT 1
)

在现有表中添加列:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1

要插入记录:

INSERT Tb_Table1 VALUES(11,0)

9

bit将是最简单的,而且占用最少的空间。与“是/否”相比,不是很冗长,但我可以接受。


4
我认为最好-不必担心Y == y和N = n,无论是真还是假。目的是完全显而易见的,并且没有单个字符字段会引起的“特殊”情况:)
Rob Grant

5

bit是最合适的选择。否则,我曾经用于int此目的。1true0false


2
通常,对于False使用0,对于True使用非零。
Edu 2016年

2
有很多味道,或者是真的,也许可以说是一个很好的政治家:D
布达·弗洛林

1

在任何版本的SQL Server Management Studio中,BIT用作数据类型

为您提供TrueFalse价值选项。如果要使用“仅” 10则可以使用以下方法:

CREATE TABLE SampleBit(
    bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)

但我会严格建议BIT作为最佳选择。完全希望它能帮助某人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.