SQL Server 中的二进制类型

大卫542

在 SQL Server 中binary type,是否可以存储小于 1 个字节的内容?

binary [ ( n ) ] 长度为 n 字节的固定长度二进制数据,其中 n 是 1 到 8,000 之间的值。存储大小为 n 字节。

例如,如果我有 8 列用于用户首选项,我是否可以将它们存储为 8 个单独的列,以获得一个字节的组合数据大小?或者这会占用8个字节。是否有任何其他数据库支持bytes可能小于一个字节对象(或者可以与其他字节/二进制列打包?)

在 SQL Server 二进制类型中,是否可以存储小于 1 个字节的内容?
例如,如果我有 8 列用于用户首选项,我是否可以将它们存储为 8 个单独的列,以获得一个字节的组合数据大小?

是的,是的。

SQL Server 会自动将压缩bit为一个字节:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-ver15

SQL Server 数据库引擎优化bit列的存储如果表中有 8 个或更少的bit列,则这些列存储为 1 个字节如果有 9 到 16 位列,则这些列存储为 2 个字节,依此类推。

字符串值'TRUE''FALSE'可以转换为位值:'TRUE'转换为1'FALSE'转换为0

转换为bit将任何非零值提升为1

我个人建议不要使用'TRUE''FALSE'字符串值到bit列值的隐式转换,原因我不会讨论(我确实感叹bitT-SQL 的语法中缺少“ -literal”,尽管您总是可以使用1and 0)。


是否有任何其他数据库支持可能小于一个字节的字节对象(或者可以与其他字节/二进制列打包?)

(请注意,SQL语言确实有一个内置的 nullabe-boolean类型,用于表示子句中的表达式EXISTS和谓词的中间结果WHERE,但 SQL 规范不要求实现支持boolean作为列类型 -这还没有SQL 规范作者需要一个耳光的另一个原因)。

众所周知,Oracle 仍然不支持任何boolean列类型——这就是为什么您看到价值数十亿美元的生产数据库使用char(1)来存储'Y''N'.

PostgreSQL 支持booleancolumns,但他们的文档没有说明它是否会压缩位域列。

MySQL 从 5.0.3 版开始支持bitbit(n). 旧版本支持boolean列 - 尽管它将boolean关键字转换为tinyint(1). 但是,MySQL 的文档没有说明是否将多个单位列压缩为多个字节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

二进制中的SQL Server订单列

从SQL Server查询Python中的二进制值

从二进制数据类型到数值数据的SQL Server转换问题

如何在SQL Server中从包含二进制文字的字符串变量中设置二进制值?

如何修复SQL Server中的错误“字符串或二进制数据将被截断”

如何通过使用SQL Server Management Studio将Excel文件作为二进制类型导入数据库表中

如何在SQL Server 2005中将十六进制字符串转换为二进制?

Sql中的二进制数

为SQL Server中的nvarchar列选择可以区分'ss'和'ß'的二进制排序规则

从SQL Server(2012)中的一系列csv字符串生成二进制矩阵?

SQL Server:确定新列中的二进制状态的查询,是否按组列出最新行?

SQL Server FOR XML以十六进制/ ASCII二进制形式出现

在SQL Server存储过程中使用十进制转换为二进制

将十六进制字符串转换为二进制SQL Server

SQL Server Management Studio使用二进制字符保存.sql文件

将1和0的32位二进制字符串转换为SQL Server中的带符号十进制数

SQL Server性能:50列vs一个二进制/ varbinary

使用Entity Framework 6从SQL Server保存和检索图像(二进制)

将二进制文件数据从SQL Server迁移到MongoDB GridFS

SQL Server字符串或二进制数据将被截断

SQL Server:字符串或二进制将被截断ASP.NET

在SQL Server中将整数转换为二进制格式

实体框架将IP作为二进制文件保存到SQL Server

SQL Server(0x80131904):字符串或二进制数据将被截断

熊猫如何从SQL Server解析二进制格式的'datetimeoffset'值

在 sql server 中将二进制数据存储为 nvarchar/varchar 数据

为什么二进制中的Sql Server映像在字符串查询中导致问题,但在参数化查询中起作用

在SQL Server中转换为二进制文件后如何在C#中获取字符串

需要在查询时将存储在 SQL Server 中的 (x,y) 点作为二进制图像转换为浮点数组