将 SQL Server 位类型导入 MS Access 数据库

Luc*_*922 0 sql-server ms-access

当我将位类型数据从 ODBC 链接的 SQL Server 导入 MS Access 数据库时,该值显示不正确。

例如,在SQL Server中,该值为1,但是当它过来时,它就变成了-1。我一直在 Access 数据库中尝试不同的数字配置,但该值仍然是-1.

这只是位类型数据。我该如何纠正这个问题?

Lee*_*Mac 5

MS Access 中的布尔值由有符号整数表示,其二进制表示形式为全一 ( True) 或全零 ( False)。

例如,对于 32 位实现:

11111111 11111111 11111111 11111111 = True  = -1
00000000 00000000 00000000 00000000 = False =  0
Run Code Online (Sandbox Code Playgroud)

由于有符号整数使用二进制补码表示形式存储在二进制中,因此全 1 的二进制值意味着符号位也被设置,从而产生整数-1


相反,SQL Server 的内存效率要高得多,只使用单个位(而不是 MS Access 使用的 32 或 64)来存储布尔值,分别0代表 False 和1代表 True。