`

mysql中的设置varchar长度问题

阅读更多

转自: http://www.cnblogs.com/fakis/archive/2011/03/07/1976532.html

 

如果某一项中设置的是varchar(50)
那么对英文当然是50
那么对中文呢
utf-8的中文占3个字节
那么,这个varchar(50)是不是只能存16个汉字了?
mysql varchar(50) 不管中文 还是英文 都是存50个的 (适用于mysql5,低版本不支持)

MySQL5的文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节)。
为何会这般变换?真是感觉MySQL的手册做的太不友好了,因为你要仔细的继续往下读才会发现这段描述:MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明 的长度大于255,长度前缀是两个字节。
好了,貌似懂了一点。但具体他说的长度大于255时使用2个字节长度前缀,小学减法题:65535 - 2 = 65533啊。不知道这些大牛如何计算的,暂且保留疑问吧?
注:我测试了一下使用UTF8编码,varchar的最大长度为21854字节。
在mysql 5.0.45版本,数据库编码utf8下进行测试:varchar最长定义为21785。也就是说不论字母、数字、汉字,只能放21785个。
推想:varchar字节最大65535,utf8编码一个字符3个字节65535/3=21785。
分享到:
评论

相关推荐

    Mysql中varchar长度设置方法

    在MySQL中,`VARCHAR`是一种用于存储可变长度字符串的数据类型,它的长度设置是非常关键的,因为它直接影响到存储空间的使用效率和数据的正确性。`VARCHAR`的长度设置方法是通过在类型名后面括号内指定最大字符数,...

    MySQL动态修改varchar长度的方法

    在MySQL中,`VARCHAR`类型用于存储可变长度的字符串,它相较于`CHAR`类型更加节省空间,因为它只存储实际输入的数据长度。然而,在数据库设计过程中,有时可能会遇到需要动态修改`VARCHAR`字段长度的情况,这通常是...

    Mysql varchar大小长度问题介绍

    综上所述,了解并掌握VARCHAR类型在MySQL中的大小长度限制以及计算方法,对于优化数据库设计和避免潜在的存储问题至关重要。在设计表结构时,应考虑到字符编码、行定义长度和存储空间的限制,以确保数据的有效存储和...

    对比MySQL中int、char以及varchar的性能

    总的来说,MySQL中的int、char和varchar在性能上的差异并非显著到足以成为决定性因素。开发者应根据实际需求,如数据的类型、大小、预期的增长、是否需要索引以及对可读性和可维护性的要求,来综合考虑选择哪种数据...

    GP数据库表结构转mysql库、oracle库 varchar类型字段长度批量处理excel_MYSQL_oracle_数据库

    对于varchar字段,可能需要在转换前对源数据进行分析,确定实际的最大长度,然后在MySQL中设置合适的varchar长度,以平衡存储效率和数据完整性。 文件“mpp数据库长度转换.xls”很可能包含了一个表格,列出了源...

    mysql VARCHAR的最大长度到底是多少

    在MySQL中,VARCHAR长度是通过一个或两个字节来表示的,具体取决于列的最大长度: - 如果VARCHAR长度小于256,则只需要一个字节来存储长度信息。 - 如果长度大于255且小于65,536(2^16),则需要两个字节来存储长度...

    char和varchar在mysql中的效率怎样.docx

    在MySQL数据库中,`CHAR`和`VARCHAR`是两种常见的字符串数据类型,它们在存储和处理数据时具有不同的效率特点。理解这两种类型的差异对于优化数据库性能至关重要。 `CHAR`是一种固定长度的数据类型,这意味着无论...

    探究MySQL中varchar的定义长度

    在MySQL数据库中,`VARCHAR` 是一种用于存储可变长度字符串的数据类型。它与固定长度的`CHAR`数据类型不同,`VARCHAR`可以根据存储的数据自动调整长度,从而节省存储空间。然而,`VARCHAR`的定义长度并不是一个直观...

    MySQL中VARCHAR与CHAR格式数据的区别

    在MySQL数据库中,CHAR和VARCHAR是两种常见的字符串数据类型,它们在存储和处理方式上有着显著的区别,这对于数据库设计和性能优化至关重要。 首先,CHAR是一种固定长度的数据类型。这意味着无论你存储的实际数据有...

    MYSQL中 char 和 varchar的区别

    CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varchar(30)表示都可以存30个字符。有一点要注意的是在utf8mb4编码中,每个字符占4个节点。在utf8中,每个字符占3个字节。...

    php判断输入不超过mysql的varchar字段的长度范围

    在开发过程中,处理数据库的输入验证是一项重要的工作,尤其是针对MySQL数据库中的varchar类型字段,我们需要确保输入的数据长度不会超过字段定义的限制。本文将详细讨论如何使用PHP判断输入长度是否不超过MySQL中...

    浅析Oracle中char和varchar2的区别 电脑资料.docx

    Oracle 中 char 和 varchar2 的区别 Oracle 中 char 和 varchar2 是两种常用的字符串数据类型,它们之间的区别是很多开发者经常忽视的。下面我们将详细分析 Oracle 中 char 和 varchar2 的区别。 首先,char 是定...

    MySQL数据库varchar的限制规则说明

    MySQL数据库中varchar最大长度是多少?其实这不是一个固定的数字,varchar的长度是有限制规则的。本文我们就来介绍一下MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,接下来就让我们一...

    MySQL中CHAR和VARCHAR类型演变和详解

    在MySQL 5.0.3之前的版本中,VARCHAR类型的最长长度限制为255个字符,而在5.0.3及以后的版本中,这个限制扩展到了65535个字节,实际可存储的字符数量会因字符集而异。这一变化使得在处理大量文本数据时,可以更有效...

    MySQL数据类型varchar详解

    MySQL中的`VARCHAR`数据类型是用于存储可变长度的字符串数据的,它的主要特点是只存储必要的数据量,节省存储空间。在MySQL 4.1之后,`VARCHAR(N)`中的`N`代表字段最多能存储的字符数,而非字节数。无论是英文、数字...

Global site tag (gtag.js) - Google Analytics