1
151
最大长度为255个字符,DBMS可以选择使用单个字节来指示字段中数据的长度。如果限制为256或更大,则需要两个字节。
长度为零的值对于
正如您所注意到的,这是一个历史优化,可能与当今大多数系统无关。 |
2
30
|
3
17
255是可以存储在单字节无符号整数(假设为8位字节)中的最大数值,因此,出于某种目的存储字符串长度的应用程序更喜欢255而不是256,因为这意味着它们只需要为“size”变量分配1个字节。 |
4
14
来自MySQL手册:
理解并做出选择。 |
5
12
255是8位整数的最大值:11111111=255。 |
6
7
最大长度255允许数据库引擎仅使用1个字节来存储每个字段的长度。1字节的空间允许存储字符串长度的2^8=256个不同值,这是正确的。 但是,如果允许字段存储零长度的文本字符串,则需要能够在长度中存储零。所以可以允许256个不同的长度值,从0开始:0-255。 |
7
6
通常,varchar被实现为pascal字符串:以字节0为单位保存实际长度。因此,长度被绑定到255。(字节的值从0到255不等。) |
8
5
<< 回顾了位/字节存储的基本原理,它需要一个字节来存储256以下的整数,而对于256到65536之间的任何整数,则需要两个字节。 因此,它需要相同的空间(两个字节)来存储511或512或65535…. 因此很明显,上面讨论中提到的这个参数对于varchar(512)或varchar(511)是不适用的。 |
9
3
8位无符号=256字节 255个字符+字节0表示长度 |
10
3
以前,所有字符串都需要一个nul终止符,或“反斜杠零”。更新的数据库没有这个功能。它是“255个字符的文本”,结尾自动添加“\0”,这样系统就知道字符串的结尾。如果你说varchar(256),那么它最终将是257,然后你将进入下一个字符的寄存器。浪费的这就是为什么一切都是varchar(255)和varchar(31)。出于习惯,255似乎一直存在,但31变成了32,511变成了512。这部分很奇怪。很难让我自己写varchar(256)。 |
11
0
我想这也许能回答你的问题。看起来这是早期系统中varchar的最大限制。我把它从另一个stackoverflow问题中去掉了。
Are there disadvantages to using a generic varchar(255) for all text-based fields? |
12
0
数据保存在二进制系统的存储器中,0和1是二进制数字。可以容纳1字节(8位)的最大二进制数是1111111,它可以转换为十进制255。 |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |