20

免责声明:总的来说,我对 SQL 和数据库非常陌生。


我需要创建一个最多可存储 32 个字符的文本数据的字段。“” 是否VARCHAR(32)意味着我的数据正好有 32 个字符?我是否需要为空终止保留一个额外的字符?

我进行了一个简单的测试,似乎这是一个所见即所得的缓冲区。但是,我想从真正知道自己在做什么的人那里得到具体的答案。


我有 C[++] 背景,所以这个问题在我脑海中敲响了警钟。

4

2 回答 2

32

是的,您可以使用 32 个字符。SQL 并不像某些编程语言那样关心以 nul 结尾的字符串。

于 2009-08-13T18:57:03.640 回答
4

您的 VARCHAR 规范大小是数据的最大大小,因此在本例中为 32 个字符。但是,VARCHARS 是一个动态字段,因此实际使用的物理存储只是数据的大小,加上一两个字节。

如果将 10 个字符的字符串放入 VARCHAR(32) 中,物理存储将是 11 或 12 个字节(手册会告诉您确切的公式)。

但是,当 MySQL 处理结果集时(即在 SELECT 之后),将为每条记录的该字段在内存中分配 32 个字节。

于 2009-08-13T18:59:42.183 回答