Sql server 如何在SQL server中创建“是/否”布尔字段?
当从Sql server 如何在SQL server中创建“是/否”布尔字段?,sql-server,boolean,sqldatatypes,Sql Server,Boolean,Sqldatatypes,当从access数据库或一般情况下转换时,创建yes/no即Boolean字段的最佳实践是什么?位数据类型通常用于存储布尔值(false的0,true的1).您可以使用位列类型。等效的是位字段 在SQL中,使用0和1设置位字段(就像Access中的是/否字段一样)。在ManagementStudio中,它显示为假/真值(至少在最新版本中) 当通过ASP.NET访问数据库时,它将以布尔值的形式显示字段。位将是最简单的,也占用最少的空间。与“是/否”相比,不太详细,但我可以接受。您可以使用位字段 要
access数据库
或一般情况下转换时,创建yes/no
即Boolean
字段的最佳实践是什么?位
数据类型通常用于存储布尔值(false
的0
,true
的1
).您可以使用位
列类型。等效的是位
字段
在SQL
中,使用0
和1
设置位字段(就像Access中的是/否字段一样)。在ManagementStudio中,它显示为假/真值(至少在最新版本中)
当通过ASP.NET访问数据库时,它将以布尔值的形式显示字段。位将是最简单的,也占用最少的空间。与“是/否”相比,不太详细,但我可以接受。您可以使用位
字段
要向现有表中添加位列,SQL命令如下所示:
ALTER TABLE\u name ADD yes\u no BIT
如果要创建新表,可以执行以下操作:create table table\u name(yes\u no BIT)
您可以使用数据类型BIT
插入的大于0的值将存储为“1”
插入的小于0的值将存储为“1”
作为“0”插入的值将存储为“0”
对于MS SQL Server 2012 Express,这一点也适用。bit是最合适的选项。否则,我曾经为此使用int
1
对于true
和0
对于false
已经有答案说使用位。我将对这些答案补充更多内容
您应该使用来表示布尔值
MSDN文章中的备注
位的值可以为1、0或NULL
SQL Server数据库引擎优化了位列的存储。如果
表中有8位或更少的列,这些列存储为
1字节。如果有从9位到16位的列,则列为
存储为2个字节,依此类推
字符串值TRUE和FALSE可以转换为位值:TRUE
将转换为1,将FALSE转换为0
转换为位会将任何非零值提升为1
注意:最好只在数据类型不为NULL时将值保留为1和0
As位的值为1、0和NULL。请参阅真相表。因此,相应地规划价值。允许位数据类型为空值可能会增加混淆
创建表时的示例用法:
[ColumnName] BIT NULL DEFAULT 0
您可以使用位
字段
创建新表:
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)
在现有表中添加列:
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)
插入记录:
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)
在任何版本的SQL Server Management Studio中,使用BIT
作为数据类型
它将为您提供True
或False
值选项。如果您只想使用1
或0
,则可以使用此方法:
CREATE TABLE SampleBit(
bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)
但我将严格建议BIT
作为最佳选择。希望它能帮助别人 如果链接Access数据库中的表,则true的值为-1,false的值为0。至少在2003年。(这是我手头上连接到客户MSSQL数据库的版本)。请注意,它不是完全等效的。如果标量函数返回一个位,您仍然需要测试它是0还是1。例如,dbo.IsReturnsBit(值)=1@D-金钱:是的,但是如果你想在一个条件下使用价值,你只需要做比较。如果在结果中使用该值,则不应进行比较。Re Mgt Studio,如果要在中复制并粘贴数据,则还需要将其设置为True/False,而不是1或0。我认为这样更好-不必担心Y==Y和N=N,纯True或False。意图是显而易见的,并且没有单字符字段所邀请的“特殊”情况:)您确定关于小于0的值的语句吗?@BiLaL这是大多数语言中的常见行为0
为假,任何非0
数字为真。-1作为true的默认值也是很常见的,因为在有符号二进制文件中,它的每一位都设置为1。如今,将1视为true(仅最低有效位集)的默认值是非常常见的。SQL标准中是否指定了bit
?我很难找到它。我能看到的最接近的是“布尔类型”。你是否担心位和布尔的语义不同?通常它用0表示假,用非零表示真。有很多不同的风格或真可能会说一个好的政治家:DBit可以取1、0或NULL值。
如果位数据类型允许空值,我不必在字段定义中指定NULL?这个定义让我觉得[field1][bit]NULL
和[field1][bit]
是等价的吗?