我已经在这里和那里阅读了自己的内容,但是没有找到可以回答我的问题的答案... 我现在有一个数据库utf8mb4,想要在一个列中存储一个字符串(长度为200-250个字符)。 utf8mb4是否可以使用VARCHAR(200-250),还是必须使用TEXT?
谢谢。
答案 0 :(得分:1)
请参阅MySQL文档上的this article:
就表结构而言,这些是主要潜力 不兼容:
对于可变长度字符数据类型(VARCHAR和TEXT) 类型),则utf8mb4的最大允许字符长度要短 列,而不是utf8mb3列。
对于所有字符数据类型(CHAR,VARCHAR和TEXT类型), utf8mb4可以索引的最大字符数少于 列,而不是utf8mb3列。
因此VARCHAR
字段将不支持您的列数据,因为它仅保留3个字节的字符(utf8mb4
顾名思义,使用4个字节)。< / s>
在这种情况下,您将需要使用其他列类型,例如 TEXT
。
引用的文章对此有更多详细信息,建议您阅读。
通过阅读更多内容,我意识到VARCHAR
数据类型实际上最多支持65535个字符(自MySQL 5.0.3起)和 65535个字节。因此,实际最大字符数为65535/4 = 16383个字符。
是,因此您的VARCHAR
列将支持您的250个字符的长字符串。
答案 1 :(得分:0)
如果您想在一列中存储250个字符,请使用VARCHAR(250)
或更多。您也可以使用TEXT
类型。真的没有多大关系。两者都是可变长度。我建议使用比您需要的大得多的最大大小。通过指定比您需要更多的东西,您不会损失任何东西。
该列的大小与编码无关,因为MySQL会计算字符数,而不是字节数。如果要存储所有Unicode字符,则必须使用utf8mb4
字符集。