mwo*_*e02 6 ms-access sql-server ddl
Access 中的 BOOLEAN 数据类型(即 Jet/ACE)为 True 返回 -1,为 False 返回 0;该字段始终是必需的(即,它不能设置为 NULL)。SQL Server BIT 类型为 True 返回 1,为 False 返回 0,并且还允许 NULL。
我正在寻找一个 T-SQL 列定义,使用 smallint、检查约束和 NOT NULL 的组合来复制 Jet/ACE BOOLEAN 数据类型的功能。换句话说,该列只接受值 0 和 -1。
为了解决您对 BIT 的担忧:
CREATE TABLE dbo.foo(bar BIT NOT NULL, blat BIT NOT NULL);
INSERT dbo.foo SELECT -1, 0;
SELECT bar, blat, -CONVERT(SMALLINT, bar), -CONVERT(SMALLINT, blat) FROM dbo.foo;
Run Code Online (Sandbox Code Playgroud)
结果:
bar blat
---- ---- ---- ----
1 0 -1 0
Run Code Online (Sandbox Code Playgroud)
BIT 相对于 TINYINT/SMALLINT 的好处是,如果您有 1-8 BIT 列,它们可以放入单个字节中。
在所有这些情况下,你仍然不能说
WHERE NOT BooleanColumn
-- or
WHERE !BooleanColumn
Run Code Online (Sandbox Code Playgroud)
你还是要说
WHERE BooleanColumn = 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5727 次 |
| 最近记录: |