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

leo*_*ora 299 sql-server boolean sqldatatypes

从访问数据库转换或一般情况下,创建是/否布尔字段的最佳做法是什么?

Guf*_*ffa 408

等价物是一个位域.

在SQL中,您使用0和1来设置位字段(就像Access中的是/否字段一样).在Management Studio中,它显示为false/true值(至少在最近的版本中).

通过ASP.NET访问数据库时,它会将该字段公开为布尔值.

  • 如果链接Access数据库中的表,则true将具有值-1,false将具有值0.至少在Access 2003中.(这是我方便的连接到客户的MSSQL数据库的版本). (3认同)
  • 请注意,它并不完全相同.如果标量函数返回一个位,则仍需要测试它是0还是1.例如,dbo.IsReturnsBit(value)= 1 (2认同)

Ale*_*lli 102

BIT数据类型是通常用于存储布尔值(0代表假,1代表真).


Mar*_*ers 23

您可以使用bit列类型.


Joh*_*ark 18

你可以使用该BIT字段.

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

ALTER TABLE table_name ADD yes_no BIT

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


小智 18

您可以使用数据类型 bit

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

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

插入为"0"的值将存储为"0"

这适用于MS SQL Server 2012 Express

  • @BiLaL这是大多数语言的常见行为."0"为假,任何非"0"数字为真.-1也是常见的默认值,因为在有符号的二进制文件中,它的每一位都设置为1.现在,将1视为true的默认值(仅限最低有效位集)是很常见的. (3认同)

Som*_*luk 16

已有答案说使用Bit.我将为这些答案添加更多内容.

您应该使用bit来表示布尔值.

来自MSDN文章的评论.

位可以取值1,0或NULL.

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

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

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

注意:最好将值保持为1和0仅与数据类型一致 NOT NULL

由于Bit的值为1,0,因此为NULL.请参阅真值表.因此,计划价值.它可能通过允许位数据类型的NULL值来增加混淆.

在此输入图像描述

参考文献1 2


tor*_*ina 15

创建表时的示例用法:

[ColumnName]     BIT   NULL   DEFAULT 0
Run Code Online (Sandbox Code Playgroud)


Sac*_*ith 11

你可以使用该BIT字段

要创建新表:

CREATE TABLE Tb_Table1
(
ID              INT,
BitColumn       BIT DEFAULT 1
)
Run Code Online (Sandbox Code Playgroud)

在现有表中添加列:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1
Run Code Online (Sandbox Code Playgroud)

要插入记录:

INSERT Tb_Table1 VALUES(11,0)
Run Code Online (Sandbox Code Playgroud)


o.k*_*k.w 9

bit将是最简单的,也占用最少的空间.与"Y/N"相比并不是很冗长,但我很好.

  • 我认为这更好 - 无需担心Y == y和N = n,纯粹是真还是假.意图是完全明显的,没有单个字符字段邀请的"特殊"案例:) (4认同)

Baq*_*qvi 5

bit是最合适的选择.否则我曾经int为此目的使用过.1true0false.

  • 通常,它使用0表示False,非零表示True. (2认同)
  • 有很多口味或真实可能会说一位优秀的政治家:D (2认同)