yes/no转换或一般转换后,创建Boolean(即access database)字段的最佳做法是什么?

#1 楼

等效的是BIT字段。

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

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

评论


而且,如果您在Access数据库中链接了表,则true的值为-1,false的值为0。至少在Access 2003中。

–亨里克·埃兰森(Henrik Erlandsson)
2013年9月20日上午10:02

请注意,它并不完全等效。如果标量函数返回一位,则仍然需要测试它是0还是1。例如,dbo.IsReturnsBit(value)= 1

–达伦·格里菲斯(Darren Griffith)
2014-09-19 18:26

@ D-Money:是的,但是如果要在条件中使用该值,则只需要进行比较即可。如果在结果中使用该值,则不应进行比较。

–古法
2015年6月7日在10:31



关于Mgt Studio,如果要复制粘贴数据,则还需要将其设置为True / False,而不是1或0。

– gorlaz
15-10-27在21:44

#2 楼

BIT数据类型通常用于存储boolean值(对于0false,对于1true)。

评论


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

– asss
16年7月1日在15:49



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

–黑暗无耻
17年3月14日在20:15

#3 楼

您可以使用bit列类型。

#4 楼

您可以使用BIT字段。

要在现有表中添加BIT列,SQL命令应类似于:

您想要创建一个新表,可以执行:ALTER TABLE table_name ADD yes_no BIT

#5 楼

您可以使用数据类型bit

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

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

插入为'0'的值将被存储为'0'

对于MS SQL Server 2012 Express而言如此

评论


您确定有关值小于0的语句吗?

– BiLaL
15年12月3日在8:14

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

– CJ Dennis
16年6月27日在3:33

#6 楼

已经有回答说使用Bit。我将在这些答案中添加更多内容。
您应该使用位来表示布尔值。
MSDN文章中的评论。 。
SQL Server数据库引擎优化了位列的存储。如果表中有8位以下的列,则这些列将存储为1个字节。如果存在9到16位列,则这些列
存储为2个字节,依此类推。
字符串值TRUE和FALSE可以转换为位值:TRUE
转换为1并将FALSE转换为0。
转换为bit会将任何非零值提升为1。仅数据类型为NOT NULL

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


参考


#7 楼

创建表时的示例用法:

[ColumnName]     BIT   NULL   DEFAULT 0


#8 楼

您可以使用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将是最简单的并且占用最少的空间。与“是/否”相比,不是很冗长,但我可以接受。

评论


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

–Rob Grant
2014年1月15日上午10:46

#10 楼

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

评论


通常,对于False使用0,对于True使用非零。

–教育
16年7月15日在16:23

有很多口味或真实的说法可能是一个好的政治家:D

–布达·弗洛林(Buda Florin)
16 Dec 2'在8:53

#11 楼


在任何版本的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作为最佳选择。完全希望它能帮助某人。