创建yes/no即Boolean字段的最佳实践是从access database转换或一般情况下?
yes/no
Boolean
access database
BIT数据类型通常用于存储boolean值(0用于false, 1用于true)。
BIT
boolean
0
false
1
true
可以使用bit列类型。
bit
等价的是BIT字段。
在SQL中,您使用0和1来设置位字段(就像Access中的yes/no字段一样)。在Management Studio中,它显示为false/true值(至少在最近的版本中)。
SQL
当通过ASP访问数据库时。NET,它会将该字段公开为布尔值。
bit将是最简单的,也占用最少的空间。与“Y/N”相比,它不是很啰嗦,但我对它很满意。
你可以使用BIT字段。
要向现有表中添加BIT列,SQL命令如下所示:
ALTER TABLE table_name ADD yes_no BIT
如果你想创建一个新表,你可以这样做:CREATE TABLE table_name (yes_no BIT)。
CREATE TABLE table_name (yes_no BIT)
可以使用数据类型bit
插入的大于0的值将存储为'1'
插入的小于0的值将存储为'1'
插入为“0”的值将存储为“0”
这适用于MS SQL Server 2012 Express
bit是最合适的选项。另外,我曾经使用int来实现这个目的。1 for true &0为false。
int
已经有答案说使用比特。我会补充更多的答案。
你应该使用位来表示布尔值。
来自MSDN文章的备注。
Bit可以取值为1、0或NULL。 SQL Server数据库引擎优化位列存储。如果 一个表中有8个或更少的位列,这些列被存储为 1个字节。如果有从9到16位的列,列为 存储为2字节,依此类推 字符串值TRUE和FALSE可以转换为位值:TRUE 转换为位将任何非零值提升为1。 Reference .
Bit可以取值为1、0或NULL。
SQL Server数据库引擎优化位列存储。如果 一个表中有8个或更少的位列,这些列被存储为 1个字节。如果有从9到16位的列,列为 存储为2字节,依此类推
字符串值TRUE和FALSE可以转换为位值:TRUE
转换为位将任何非零值提升为1。
Reference .
NOT NULL
作为位有值1,0和NULL。请看真值表。所以要相应地规划价值。允许位数据类型为NULL值可能会增加混淆。
参考< a href = " https://stackoverflow.com/questions/3138029/is-there-a-boolean-data-type-in-microsoft-sql-server-like-there-is-in-mysql " > < / >
创建表时的示例用法:
[ColumnName] BIT NULL DEFAULT 0
你可以使用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)
在任意版本的SQL Server Management Studio中,使用BIT作为数据类型
它将为你提供True或False值选项。如果你想使用Only 1或0,那么你可以使用这个方法:
True
False
CREATE TABLE SampleBit( bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1)) )
但我将严格建议BIT作为最好的选项。希望它能帮助到别人。
如果你正在使用Postgres, BIT类型不支持它。所以,你必须使用INT来存储布尔类型。在这种情况下,你可以假设0为假,1为真。
[ColumnName] INT NULL DEFAULT 0
你可以使用BIT类型,它可以包含1或0,如果允许使用NULL,也可以使用NULL。
NULL
BIT类型转换:
"0"
然后,你可以用BIT类型创建一个表,如下所示:
CREATE TABLE doctor ( id INT IDENTITY, name NVARCHAR(50), on_call BIT, -- Here PRIMARY KEY(id) ) GO
然后插入行,如下图所示:
INSERT INTO doctor VALUES ("John", 1), ("Tom", 0), ("Lisa", "-23"), ("Kai", "0"), ("Bob", NULL) GO
1> SELECT * FROM doctor 2> GO id name on_call -- ---- ------- 1 John 1 <- 1 2 Tom 0 <- 0 3 Lisa 1 <- "-23" 4 Kai 0 <- "0" 5 Bob NULL <- NULL