Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL server中创建“是/否”布尔字段?_Sql Server_Boolean_Sqldatatypes - Fatal编程技术网

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表示假,用非零表示真。有很多不同的风格或真可能会说一个好的政治家:D
Bit可以取1、0或NULL值。
如果位数据类型允许空值,我不必在字段定义中指定NULL?这个定义让我觉得
[field1][bit]NULL
[field1][bit]
是等价的吗?