MySQL VARCHAR或TEXT

时间:2018-10-30 16:55:07

标签: mysql mysqli utf8mb4

我已经在这里和那里阅读了自己的内容,但是没有找到可以回答我的问题的答案... 我现在有一个数据库utf8mb4,想要在一个列中存储一个字符串(长度为200-250个字符)。 utf8mb4是否可以使用VARCHAR(200-250),还是必须使用TEXT?

谢谢。

2 个答案:

答案 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字符集。