MySql中的varchar长度究竟是字节还是字符

今天在设计表的时候,遇到个小问题,由于不知道未来将要存储的数据有多长(数据是通过第三方http接口提供的,根据sample显示,数据大概是如下:)

也就是6个字符。

我在设计表的时候,有点犹豫,本来准备设计为varchar(6),但担心是按字节计算的,会导致存不下。(数据库采用utf8编码)

于是自己试了下,

可以存放5个utf8字符。看来Mysql的varchar是按照字符来计算的。

然后也查阅了一下网上的答案:

也就是version4之前,按字节;

version5之后,按字符。

时间: 2024-08-28 01:03:28

MySql中的varchar长度究竟是字节还是字符的相关文章

MySQL的varchar定义长度到底是字节还是字符

相信这个问题也会困扰不少人,尤其是使用过其它数据库(如Oracle)的人,之前我也没有太在意这个问题,再加上一些书籍和网上的文章讲的不够细致,又没测试过,导致我一直理解错误.下面通过实例来解释,在开始之前先简单介绍下字符和字节的区别.字符 人们使用的记号,抽象意义上的一个符号.一个汉字和英文就是一个字符,如'1', '中', 'a', '$', '¥',…… 字节 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间,如0x01, 0x45, 0xFA,……详细的可以参考http:

mysql中char,varchar,text

1.char char最大长度是255字符,注意是字符数和字符集没关系. 1)可以有默认值, 2)尾部有空格会被截断 3)不管汉字.英文,还是其他编码,都可以存255字符 2.varchar 1)varchar最多能存储65535个字节的数据,varchar 的最大长度受限于最大行长度(max row size,65535bytes),65535并不是一个很精确的上限,可以继续缩小这个上限 65535个字节包括所有字段的长度,变长字段的长度标识(每个变长字段额外使用1或者2个字节记录实际数据长度

MYSQL中group_concat有长度限制!默认1024

在mysql中,有个函数叫"group_concat",平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更大,就需要手工去修改配置文件. 详细说明如下: 用了group_concat后,select里如果使用了limit是不起作用的. 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少.但你可以设置一下. 使用group_concat_max_len系统变量,你可以设置

MYSQL中group_concat有长度限制!默认1024(转载)

在mysql中,有个函数叫"group_concat",平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更大,就需要手工去修改配置文件. 详细说明如下: 用了group_concat后,select里如果使用了limit是不起作用的. 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少.但你可以设置一下. 使用group_concat_max_len系统变量,你可以设置

关于MySQL中的varchar类型的研究

很多人讲MySQL中varchar类型的数据大小应该设置为偶数,因为一个中文占用两个字节.今天我们来测试一下varchar大小是字符还是字节,使用工具:Navicat: 1.首先创建一个t_test表,里面只有一个字段test,将其设置为varchar(1) 2.向表中添加分别添加两个数据"1"和"天" 3.测试结果:varchar()里面输入的大小代表的是字符,为了验证测试的可靠性,添加两个字符报错图片: 原文地址:https://www.cnblogs.com/

mysql中的varchar转mssql中nvarchar

1:将数据库多用户改为单用户 ALTER DATABASE db_database SET SINGLE_USER WITH ROLLBACK IMMEDIATE 2: 执行完第一条sql后续关闭所有查询窗口 sqlmanagement中选择库,右键,属性,选项,排序规则,Chinese_PRC_90_CI_AI 3: 改为多用户 ALTER DATABASE db_database SET MULTI_USER 在mysql中varchar   转到了mssql中就是nvarchar  n就是

mysql中char,varchar,text区别总结

具体对这三种类型的说明不做阐述可以查看mysql帮助文档. char的总结:      char最大长度是255字符,注意是字符数和字符集没关系.可以有默认值,尾部有空格会被截断.varchar的总结:      varchar的最大长度65535是指能存储的字节数,其实最多只能存储65532个字节,还有3个字节用于存储长度.注意是字节数这个和字符集有关系.一个汉字字符用utf8占用3字节,用gbk占用2字节.可以有默认值,尾部有空格不会截断.text的总结:      text和varchar

MySQL中索引的长度的限制

参考: http://dinglin.iteye.com/blog/1681332 单列索引的长度的限制 (5.6里面默认不能超过767bytes,5.7不超过3072bytes): 起因是256×3-1=767.这个3是字符最大占用空间(utf8).但是在5.5以后,开始支持4个字节的uutf8.255×4>767, 于是增加了一个参数叫做 innodb_large_prefix # 256的由来: 只是因为char最大是255,所以以前的程序员以为一个长度为255的index就够用了,所以设

MySQL 中索引的长度的限制

单列索引的长度的限制 (5.6里面默认不能超过767bytes,5.7不超过3072bytes): 起因是256×3-1=767.这个3是字符最大占用空间(utf8).但是在5.5以后,开始支持4个字节的uutf8.255×4>767, 于是增加了一个参数叫做 innodb_large_prefix # 256的由来: 只是因为char最大是255,所以以前的程序员以为一个长度为255的index就够用了,所以设置这个256.历史遗留问题.   --- by 阿里-丁奇 在MySQL5.6里默认