创建是/否即布尔字段时,从访问数据库或一般转换的最佳实践是什么?
当前回答
您可以使用数据类型位
插入的大于0的值将存储为'1'
插入的小于0的值将存储为'1'
插入为“0”的值将存储为“0”
这适用于MS SQL Server 2012 Express
其他回答
可以使用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将是最简单的,也占用最少的空间。与“Y/N”相比,它不是很啰嗦,但我对它很满意。
已经有答案说使用比特。我会补充更多的答案。
您应该使用比特来表示布尔值。
来自MSDN文章的备注。
Bit可以取值为1、0或NULL。 SQL Server数据库引擎优化位列的存储。如果 一个表中有8个或更少的位列,这些列被存储为 1个字节。如果有从9到16位的列,列为 存储为2字节,以此类推。 字符串值TRUE和FALSE可以转换为位值:TRUE 转换为1,FALSE转换为0。 转换为位将任何非零值提升为1。 参考
注意:只有在数据类型为NOT NULL时,才将值保持为1和0是一种良好的实践
作为位有值1,0和NULL。请看真值表。所以要相应地规划价值。允许位数据类型为NULL值可能会增加混淆。
参考
创建表时的示例用法:
[ColumnName] BIT NULL DEFAULT 0
您可以使用位列类型。
推荐文章
- MySql: Tinyint (2) vs Tinyint(1) -有什么不同?
- 在Android SQLite中处理日期的最佳方法
- 在SQL Server中查找重复的行
- 执行带有Output参数的存储过程?
- 我如何在T-SQL用逗号格式化一个数字?
- LEFT OUTER JOIN如何返回比左表中存在的记录更多的记录?
- 如何用SQL语句计算百分比
- SQL Server动态PIVOT查询?
- 如何等待2秒?
- SQL Server: CROSS JOIN和FULL OUTER JOIN的区别是什么?
- varchar和nvarchar SQL Server数据类型之间的主要性能差异是什么?
- 使用{merge: true}设置的Firestore与更新之间的差异
- 向现有表添加主键
- mysql_connect():[2002]没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接)在
- 使用电子邮件地址为主键?