免责声明:我对SQL和数据库一般都很陌生。
我需要创建一个最多可存储32个字符的文本数据的字段。 “VARCHAR(32)
”是否意味着我的数据正好是32个字符?我是否需要为空终止保留额外的字符?
我进行了一个简单的测试,看起来这是一个WYSIWYG缓冲区。但是,我想从那些真正知道自己在做什么的人那里得到一个具体的答案。
我有一个C [++]背景,所以这个问题引起了我的警钟。
答案 0 :(得分:26)
是的,您可以使用32个字符。 SQL并不像一些编程语言那样关注nul终止的字符串。
答案 1 :(得分:1)
您的VARCHAR规范大小是数据的最大大小,因此在本例中为32个字符。但是,VARCHARS是一个动态字段,因此实际使用的物理存储空间只是数据的大小,加上一个或两个字节。
如果将一个10个字符的字符串放入VARCHAR(32),则物理存储将为11或12个字节(手册将告诉您确切的公式)。
但是,当MySQL处理结果集时(即在SELECT之后),将在内存中为每个记录分配32个字节。