对于大多数小文本字段,我通常使用VARCHAR,除非我知道该字段将是固定大小,如美国州缩写,我将使用CHAR(2)。
“正确”是一个强有力的词,但大多数人可能会使用VARCHAR
。 CHAR
也是一种选择,但在我的体验中并不常用。 This page解释了差异。
最新版本的MySQL中CHAR
和VARCHAR
之间的显着差异之一是CHAR
无法存储尾随空格(因为列会自动填充到其最大长度通过空间)。因此,如果您存储'abc '
之类的内容,则会将其检索为'abc'
。对于大多数应用程序而言,这可能无关紧要,但需要牢记这一点。类似地,在5.03之前,在插入之前从VARCHAR
字段中删除尾随空格。因此,如果您需要存储任意字节值并且不想担心MySQL版本之间的不同行为,则应使用BLOB
类型之一。