[我的] SQL VARCHAR大小和Null-Termination

时间:2009-08-13 18:55:05

标签: sql mysql varchar null-terminated

免责声明:我对SQL和数据库一般都很陌生。


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

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


我有一个C [++]背景,所以这个问题引起了我的警钟。

2 个答案:

答案 0 :(得分:26)

是的,您可以使用32个字符。 SQL并不像一些编程语言那样关注nul终止的字符串。

答案 1 :(得分:1)

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

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

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