我目前正在为一家大公司开发,他们要求我按照一些指导原则为该项目创建一个数据库,但我有一个关于char和varchar的小问题。
我有一个字符串,可以是8个字符,也可以是11个字符,我想知道哪个是最好的解决方案:
myColumn varchar(11)或myColumn char(11)
一开始我在想第二个,但是char是固定长度的,不是吗?
谢谢你的回答。
发布于 2016-11-29 18:18:30
char( 11 )可以容纳最多11个字符的字符串,但是即使只有2个字符,它也会占用全部11个字符的空间(将用空格填充其余的字符)。其中,as varchar(11)保存相同长度的字符串,但不保留空间。
发布于 2016-11-29 18:23:32
CHAR数据类型是固定长度的数据类型。例如,如果您声明一个CHAR ( 11 )数据类型的列,那么无论您在此列中存储的是1个字符还是11个字符,它都将始终占用11个字节。
另一方面,VARCHAR是一种可变长度数据类型。例如,如果声明一个数据类型为VARCHAR (11)的列,它将采用与此列中存储的字符数相等的字节数。因此,在这个变量/列中,如果你只存储一个字符,那么它将只占用一个字节,如果我们存储11个字符,那么它将占用11个字节。在本例中,由于您已将一个列声明为VARCHAR ( 11 ),因此我们可以在此列中存储最多11个字符。
发布于 2016-11-29 18:26:01
varchar(11)更可取,因为内存分配是动态的(例如,假设字符串长度为8,则仅为8个字符分配内存,而不是为所有字符分配内存。但是在为所有单元分配了char(11)存储器的情况下。
https://stackoverflow.com/questions/40863184
复制相似问题