MySQL中的VARCHAR和CHAR有什么区别?

我正在尝试存储MD5哈希。


当前回答

如果输入的字符比声明的长度短,Varchar将截断尾随空格,而char则不会。Char将填充空格,并且始终是声明的长度。在效率方面,varchar更熟练,因为它修剪字符,允许更多的调整。但是,如果您知道char的确切长度,则char将以更快的速度执行。

其他回答

VARCHAR是可变长度的。

CHAR是固定长度。

如果您的内容是固定大小的,那么使用CHAR将获得更好的性能。

请参阅MySQL页面上关于CHAR和VARCHAR类型的详细解释(一定要阅读注释)。

区分这两者对完整性方面也有好处。

如果你希望存储有长度规则的东西,比如yes或no,那么你可以使用char(1)来存储Y或n。对于货币代码也很有用,你可以使用char(3)来存储像USD, EUR或AUD这样的东西。

varchar更适合那些除了限制长度之外没有一般规则的情况。它适用于名称或描述之类的东西,在这些地方,值的长度会有很多变化。

然后出现了文本数据类型,并在工作中使用了扳手(尽管它通常只是没有定义上限的varchar)。

字符:

同时支持字符和数字。 支持2000个字符。 固定长度。

VARCHAR:

同时支持字符和数字。 支持4000字符。 可变长度。

任何评论 ......!!!!

CHAR Vs VARCHAR

CHAR用于固定长度大小变量 VARCHAR用于可变长度大小变量。

E.g.

Create table temp
(City CHAR(10),
Street VARCHAR(10));

Insert into temp
values('Pune','Oxford');

select length(city), length(street) from temp;

输出将是

length(City)          Length(street)
10                    6

结论:如果变长是可变的,必须使用VARCHAR而不是CHAR来有效地利用存储空间

CHAR

CHAR是一个固定长度的字符串数据类型,因此字段中的任何剩余空间都用空格填充。 CHAR每个字符占用1个字节。因此,一个CHAR(100)字段(或变量)在磁盘上占用100个字节,而不管它所包含的字符串是什么。

VARCHAR

VARCHAR是一种可变长度的字符串数据类型,因此它只保存您分配给它的字符。 VARCHAR每个字符占用1个字节,+ 2个字节保存长度信息(例如,如果你设置VARCHAR(100)数据类型= ' Dhanika ',那么它将占用7个字节(对于D, H, a, N, I, K和a)加上2个字节,或总共9个字节)。