【发布时间】:2010-12-19 03:13:39
【问题描述】:
从access database 或一般情况下转换时创建yes/no 即Boolean 字段的最佳做法是什么?
【问题讨论】:
标签: sql-server boolean sqldatatypes
从access database 或一般情况下转换时创建yes/no 即Boolean 字段的最佳做法是什么?
【问题讨论】:
标签: sql-server boolean sqldatatypes
相当于BIT 字段。
在SQL 中,您使用0 和1 设置位字段(就像Access 中的yes/no 字段一样)。在 Management Studio 中,它显示为 false/true 值(至少在最近的版本中)。
当通过 ASP.NET 访问数据库时,它会将字段公开为布尔值。
【讨论】:
BIT 数据类型通常用于存储boolean 值(0 用于false,1 用于true)。
【讨论】:
BIT?我很难找到它。我能看到的最接近的是“布尔类型”。
您可以使用bit 列类型。
【讨论】:
您可以使用BIT 字段。
要向现有表添加 BIT 列,SQL 命令如下所示:
ALTER TABLE table_name ADD yes_no BIT
如果你想创建一个新表,你可以这样做:CREATE TABLE table_name (yes_no BIT)。
【讨论】:
可以使用数据类型bit
大于 0 的插入值将存储为 '1'
插入的小于 0 的值将存储为 '1'
插入为“0”的值将存储为“0”
这适用于 MS SQL Server 2012 Express
【讨论】:
0 为假,任何非0 的数字为真。 -1 作为 true 的默认值也很常见,因为在有符号二进制文件中,它的每个位都设置为 1。如今,将 1 作为 true 的默认值非常常见(仅设置了最低有效位)。跨度>
已经有答案说使用 Bit。我将在这些答案中添加更多内容。
您应该使用bit 来表示布尔值。
来自 MSDN 文章的备注。
Bit 可以取值 1、0 或 NULL。
SQL Server 数据库引擎优化了位列的存储。如果 表中有 8 个或更少的位列,这些列存储为 1 个字节。如果有 9 到 16 位列,则这些列是 存储为 2 个字节,依此类推。
字符串值 TRUE 和 FALSE 可以转换为位值:TRUE 转换为 1,FALSE 转换为 0。
转换为位会将任何非零值提升为 1。
NOT NULL 时将值保留为 1 和 0
因为 Bit 有值 1、0 和 NULL。参见真值表。因此,相应地计划价值。允许位数据类型为 NULL 值可能会增加混乱。
【讨论】:
Bit can take a value of 1, 0, or NULL. 如果位数据类型允许空值,我不必在字段定义中指定空值?这个定义让我觉得[field1] [bit] NULL 和[field1] [bit] 是等价的?
创建表时的示例用法:
[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)
【讨论】:
bit 是最简单的,占用的空间也最少。与“是/否”相比不是很冗长,但我很好。
【讨论】:
bit 是最合适的选项。否则我曾经为此使用int。 1 为true 和0 为false。
【讨论】:
在任何版本的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 作为 BEST 选项。完全希望它对某人有所帮助。
【讨论】: