创建是/否即布尔字段时,从访问数据库或一般转换的最佳实践是什么?


当前回答

您可以使用BIT类型,可以有1或0,如果允许使用NULL,也可以使用NULL。

BIT类型转换:

除0到1以外的任何整数值。 除“0”到1之外的任何整型字符串值。 0到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

其他回答

Bit将是最简单的,也占用最少的空间。与“Y/N”相比,它不是很啰嗦,但我对它很满意。

可以使用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类型,可以有1或0,如果允许使用NULL,也可以使用NULL。

BIT类型转换:

除0到1以外的任何整数值。 除“0”到1之外的任何整型字符串值。 0到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

在任意版本的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作为最佳选择。希望它能帮助到别人。

您可以使用位列类型。