首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql中的varchar到底能存多长的字符

MySQL 中的 VARCHAR 类型是用来存储可变长度的字符串类型,其存储容量是由定义的字符数而不是字节数来确定。不同字符集下 VARCHAR 的最大存储长度可能会有所不同,一般常用的 UTF-8 和 UTF-16 的 UTF-8 字符集中 VARCHAR(M) 类型可以存储从 1 个到 2^31-1 个字符(M 代表 VARCHAR 存储的最大长度)。

例如,在 UTF-8 字符集中, VARCHAR(65535) 类型可以存储从 0-65535 个字符。如果只需要存储一个汉字,则 VARCHAR(65536) 可以存储 6 个汉字,每个字符以 UTF-8 编码来表示,总共有 65536/3=21843 个字节。

总结来说,MySQL 的 VARCHAR 类型能够存储的字符最大长度取决于所选择的字符集和存储长度,但无论如何都一定会比 VARCHAR 类型指定的大小要大。如果仅仅需要存储非常少量的字符,可以考虑使用固定长度 VARCHAR 类型,即 VARCHAR(255) 等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysqlvarchar到底多少个字符

mysqlvarchar到底多少个字符 结论 (65535字节-其他列所占用子节-varchar列长度-null标识占用字节数)/3,向下取整....注意 4.0版本及以下,MySQLvarchar长度单位是字节,如varchar(20),指的是20字节; 5.0版本及以上,MySQLvarchar长度单位是字符。...如varchar(20),指的是20字符。 测试环境 mysql5.7,存储引擎innodb,utf8字符集 GBK编码: 一个英文字符占一个字节,中文2字节,单字符最大可占用2个字节。...UTF-8编码: 一个英文字符占一个字节,中文3字节,单字符最大可占用3个字节。 utf8mb4编码: 一个英文字符占一个字节,中文3字节,单字符最大占4个字节(如emoji表情4字节)。...单列 (65535-3)/3=21844 多列 (65535-其他列占用总字节数)/3,向下取整 21844-255=21589 因为255也要占用额外空间存储长度和null标识,实际需要255*3

30610

一篇文章看懂mysqlvarchar多少汉字、数字,以及varchar(100)和varchar(10)区别

看完这篇文章,你搞清楚以下问题: 1、varchar(100)和varchar(10)区别在哪里? 2、varchar多少汉字、数字? 3、varchar最大长度是多少呢?...4、字符、字节、位,之间关系? 5、mysql字段类型存储需要多少字节? 接下来请仔细看,整理不易啊。 1、varchar(100)和varchar(10)区别在哪里?...但是,它确实会对查询产生影响,因为当MySql创建临时表(SORT,ORDER等)时,VARCHAR会转换为CHAR,转换后CHAR长度就是varchar长度,在内存空间就变大了,在排序、统计时候需要扫描就越多...第二、在内存操作方式,varchar也是按照最长方式在内存中进行操作。比如说要进行排序时候,varcahr(100)是按照100这个长度来进行。 2、varchar多少汉字、数字?...mysqlvachar字段类型虽然最大长度是65535,但是并不是这么多数据,最大可以到65533,其中需要1到2个字节来存储数据长度(如果列声明长度超过255,则使用两个字节来存储长度,否则

7.3K52

Mysql去除字符特殊字符varchar转int

场景描述 Mysql中有varchar类型字段,并且为:123,456 形式,需要对其进行排序,并根据条件筛选出前5条 模拟表数据 表名:table_a t_id(int) t_year(int) t_value...(varchar) 1 2019 123,456 Mysql去除字符特殊符号 使用到函数:REPLACE(str,from_str,to_str) 用法 str:需要操作字段 from_str...:字段特殊符号 to_str:需要替换成什么样 这里把t_value值为:123,456”,” 去掉,也就是替换成空。...SQL: SELECT REPLACE(t_value,",","") FROM table_a; Mysqlvarchar转int 使用到函数: CAST(Filed AS UNSIGNED INTEGER...) 用法 Filed:为需要转换字段名 这里需要先把t_value”,”去掉然后再转成int SQL: SELECT CAST(REPLACE(t_value,",","") AS UNSIGNED

3.4K20

Mysqlvarchar字符比较,swoole预处理参数绑定

写在前面 事情起因: 使用了一个varchar类型字段储存数字值。 在根据该字段进行大小筛选时候,出现该问题。...类似select * from sheets where s_status > 3 分析 php调用时条件传是数字类型 组件生成SQL语句直接执行正常 排查 打开了mysql运行日志,分析到最终运行...解决有两条路 mysql字段类型改为数字 研究swoole参数预处理问题,可以测试普通PHP预处理是否也有问题 学习字符串类型字段比较规则 mysql字符串类型字段比较规则 找了一圈资料...执行 我筛选>3应该是2条结果都有,但是程序运行只能得到1条结果: id = 1数据 那么我们上面说到 字符比较规则,从第一个字符开始比较,只有第一个字符相等 才会比较第二个字符… ‘4’ >...‘3’ 通过 字符 4 对应ASCII码为 52 字符 3 对应ASCII码为 51 ‘258710588’ > ‘3’ 不通过 字符 2 对应ASCII码为 50 字符 3 对应ASCII码为

1.5K20

mysqlvarchar_从数据类型varchar转化为

MySQL数据类型varchar详解 更新时间:2014年03月17日 11:10:11 作者: 这篇文章详细介绍了MySQL数据类型varchar,探讨varchar到底多长数据、InnoDB...和MyISAMvarchar等问题,需要朋友可以参考下 1、varchar(N)逻辑意义从MySQL4.1开始,varchar (N)N指的是该字段最多能存储多少个字符(characters...2、varchar(N)到底多长数据 在mysql reference manual上,varchar最多能存储65535个字节数据。...65535-100*8-1*8-2 = 64725 > 256, 那么字段i最大长度为64725 – 2 =64723 bytes,即N=64723 。 varchar到底多少个字符?...4、InnoDBvarchar InnoDBvarchar物理存储方式与InnoDB使用innodb_file_format有关。

1.4K30

Java进阶笔记——MySqlvarchar类型

1.varchar类型变化 MySQL 数据库varchar类型在4.1以下版本最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。...在 MySQL5.0以上版本varchar数据类型长度支持到了65535,也就是说可以存放65532个字节数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本需要使用固定TEXT...MySQL 数据库varchar类型在4.1以下版本,nvarchar(存储是Unicode数据类型字符)不管是一个字符还是一个汉字,都存为2个字节 ,一般用作中文或者其他语言输入,这样不容易乱码...4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能6个(每个汉字3字节) ;5.0版本以上,varchar(20),指的是20字符,无论存放是数字、字母还是UTF8...例如,一个VARCHAR(10)列保存最大长度为10个字符一个字符串,实际存储需要是字符长度 ,加上1个字节以记录字符长度。对于字符串'abcd',L是4而存储要求是5个字节。

2.2K30

关于MySQLchar与varchar区别

MySQLvarchar和char都是可以存储字符类型,并且,在设计数据表时,必须明确指定长度!...varchar是变长,假设某字段设计为varchar(10),当存入是"java"字符串时,实际存入4个字符,则实际占用也是4个字符空间大小; char是定长,假设某字段设计为char(10),...在MySQL处理varchar类型时,默认情况下,还会使用额外1个字节记录“实际存入字符数量”,也就是说,将"java"存入到varchar(10)字段MySQL还会使用额外1个字节空间记下...4这个数量值,后续,当读取这个值时,MySQL会先读取这个4,然后再开始获取字段数据;而char类型就不存在这个问题,因为使用char类型存储字符长度一定是固定(即使不固定,也会添加空格,使得该字段所有字符长度都与字段设计值保持一致...当然,在处理varchar类型时,由于默认情况下只使用1个字节记录“实际存入字符数量”,所以,在这种情况下能够存入字符数量最多是255个(1个字节能表示最大正数),当需要存入更多数据时,MySQL

2.3K20

MySQLenum,char与varchar,decimal

1.MySQLENUM类型使用之性别男女设定默认为男:  SQL语句为: mysql> create table student (id int(11) primary key auto_increment...,name varchar( 10) NOT NULL,sex enum('男','女','保密')default '保密')ENGINE=InnoDB; 写入: mysql>insert into student...(name,sex) value ('张三','男') 注:enum如果默认是'保密',则括号里也要有'保密'这项。...此时,插入数据“12.3”、“12”等会出现“数据溢出错误”异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位有效长度,其中包含1位小数...3.varchar和char: varchar:字符串型,不定长,溢出则截取掉,不足则不补满。如:varchar name(10); char:字符串型,定长,溢出则截取掉,不足则补满。

2K10

MySQLchar、varchar和text设计

首先普及几个常识: 1、char(n)和varchar(n)括号n代表字符个数,并不代表字节个数,所以当使用了中文时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。...2、同时char和varchar最大区别就在于char不管实际value都会占用n个字符空间,而varchar只会占用实际字符应该占用空间+1,并且实际空间+1<=n。...3、超过char和varcharn设置后,字符串会被截断。 4、char上限为255字节,varchar上限65535字节,text上限为65535。...总体来说: 1、char,定长,速度快,存在空间浪费可能,会处理尾部空格,上限255。...首先从空间方面: 从官方文档我们可以得知当varchar大于某些数值时候,其会自动转换为text,大概规则如下: 大于varchar(255)变为 tinytext 大于varchar(500)变为

2.1K10

MySQLchar、varchar和text区别

另外,varchar类型实际长度是它实际长度+1,这一个字节用于保存实际使用了多大长度。 3.text:存储可变长度非Unicode数据,最大长度为2^31-1个字符。...text列不能有默认值,存储或检索过程,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用,意思就是你插入数据时候,超过你指定长度还是可以正常插入。...结论: 经常变化字段用varchar; 知道固定长度用char; 尽量用varchar; 超过255字节只能用varchar或者text; 能用varchar地方不用...text; 能够用数字类型字段尽量选择数字类型而不用字符串类型(电话号码),这会降低查询和连接性能,并会增加存储开销。...这是因为引擎在处理查询和连接回逐个比较字符每一个字符,而对于数字型而言只需要比较一次就够了。 本文参考:http://www.jianshu.com/p/cc2d99559532

1.9K10

MySQLchar、varchar和text区别

1.char:存储定长数据很方便,CHAR字段上索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储数据是否达到了10个字符,都要占去10个字符空间(自动用空格填充...另外,varchar类型实际长度是它实际长度+1,这一个字节用于保存实际使用了多大长度。 3.text:存储可变长度非Unicode数据,最大长度为2^31-1个字符。...text列不能有默认值,存储或检索过程,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用,意思就是你插入数据时候,超过你指定长度还是可以正常插入。...---- 结论: 经常变化字段用varchar; 知道固定长度用char; 尽量用varchar; 超过255字节只能用varchar或者text; 能用varchar地方不用text; 能够用数字类型字段尽量选择数字类型而不用字符串类型...这是因为引擎在处理查询和连接回逐个比较字符每一个字符,而对于数字型而言只需要比较一次就够了。 文章来源:http://www.cnblogs.com/xianDan/p/4292706.html

1.3K40

MysqlMysqlchar,varchar与text类型区别和选用

当你想要储存一个长度不足255字符时,MySQL会用空格来填充剩下字符。因此在读取数据时,char类型数据要进行处理,把后面的空格去除。...(2)varchar: 关于varchar,有的说最大长度是255,也有的说是65535,查阅很多资料后发现是这样varchar类型在5.0.3以下版本最大长度限制为255,而在5.0.3及以上版本...,varchar数据类型长度支持到了65535,也就是说可以存放65532个字节(注意是字节而不是字符!!!)...数据(起始位和结束位占去了3个字节),也就是说,在5.0.3以下版本需要使用固定TEXT或BLOB格式存放数据可以在高版本中使用可变长varchar来存放,这样就能有效减少数据库文件大小。...超过255字符只能用varchar或者text 能用varchar地方不用text

1.8K10

MysqlCHAR和VARCHAR如何选择?给定长度到底是用来干什么

于是又讨论到了varcharMySQL存储方式。,以证明增加长度所占用空间并不大。那么我们就看看varcharmysql到底是如何存储。 ?...varchar类型在mysql是如何定义? 先看看官方文档: ? ?...另外,varchar类型实际长度是它实际长度+1,这一个字节用于保存实际使用了多大长度。 ALL IN ALL 在MySQL数据库,用最多字符型数据类型就是Varchar和Char.。...我们在评估到底是使用VARCHAR数据类型还是采用CHAR数据类型时,就需要进行均衡。在实际项目中,我们会考量如下情况。 是根据字符长度来判断。如某个字段,像人名字,其最长长度也是有限。...简单说,就是使用字符类型定义长度,即200个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大不利影响。

3.4K40

MySQL数据库varchar与char类型区别

在数据库建表时,需要给数据定义一个数据库数据库类型,当需要给String类型定义一个数据库类型时,可以看见有两个选择,一个是varchar,另一个是char,有很多人不清楚两者区别,包括自己在内...1、varchar长度是可变,char长度不可变。        ...也就是说当将两者长度都定为10,然后向其中存入一个字符串“good”,显然字符串“good”长度不到10,当定义类型为char类型时,存入长度依旧是10,由字符串“good”和后面的6个空格组成。...当我们定义为varchar类型时,长度就变为了4,“good”字符串原有的长度。        在获取数据时,char类型数据需要使用trim()方法,去掉字符串后面多余空格。...4、char存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者存储数据都非unicode字符数据

1.4K30

数据库存储日期字段类型到底应该用varchar还是datetime ?

字符串未被识别伪有效DateTime        正在做新闻发布系统,数据库存储时间字段类型为datetime类型,并且字段值都是在服务器端自动获取。...2、将数据库存储时间数据类型改为varchar(),不过这时最好让这些时间是数据库自动生成(一个没有格式输入也可能会导致输出错误),因为存储类型为varchar(),所以获取到值也就被认为是一个字符串...,这时在转换时间格式时就少了上图中【将获取时间转化为客户端时间格式下值】步骤,直接将数据库时间字符串进行转化(这时那些转化函数是识别数据库时间函数),客户端时间格式不再影响转换过程。...等,那就麻烦了,尤其实在大型数据查询中转换类型是会影响效率 总结         数据库存储日期字段类型到底应该用varchar还是datetime ?...这两种方法各有优势,datetime可以借用sql函数库运算函数,增加了时间在各种运算上效率;而varchar类型则可以在字符编码上显出优势。

3.8K30

MySqlvarchar和char,如何选择合适数据类型?

背景 学过MySQL同学都知道MySQLvarchar和char是两种最主要字符串类型,varchar是变长类型,而char是固定长度。...varchar和char数据类型区别 varchar类型用于存储可变长字符串,是比较常见常用字符串数据类型,在存储字符串是变长时,varchar更加节约空间。...在存储数据时,MySQL会删除所有文末空格,所以,即便你存储是:'abc ',注意这个字符串末尾是有空格,也会在存储时把这个空格删掉,这点需要注意。...适用场景 varchar适用场景: 字符串列最大长度比平均长度要大很多; 字符串列更新很少时,因为没有或很少有内存碎片问题; 使用了UTF-8这样复杂字符集,每个字符都使用不同字节数进行存储...: 会删除列末尾空格信息 参考: 《高性能MySQL第3版》第四章

2.3K20

MySQL字符集与字符

这篇文章详细介绍一下MySQL字符集和字符序相关问题,里里外外地了解一下字符集和字符方方面面,同时重点说明一下开发需要注意问题。文章基于MySQL 8.0,也会涉及到5.7版本。...MySQL字符集与字符序了解了字符集和字符序之后,来看看MySQL字符集与字符序。...3.4 MySQL相关变量MySQL中有一些变量用于字符集与字符设置。...设置字符集与字符MySQL中支持多种字符集与字符序,对此,MySQL能够为我们做到:使用不同字符集存储字符串;使用不同字符序对字符串进行排序;在同一个服务器,或同一个数据库,甚至同一张表中使用不同字符集或字符序...4.3 客户端连接设置当我们使用mysql这个客户端与MySQL服务器连接时候,也会涉及到字符集与字符设置。

2.6K42

MySQL-存储引擎-创建表-字段数据类型-严格模式-字段约束-键-02

,发现数据也正常存储进去,只是 mysql 帮我们自动截取了最大长度。...字符类型(char与varchar) CHAR VARCHAR 区别 char(4) 最大只能4个字符,超出会直接报错(严格模式)或截取,如果少了,会自动用空格填充 varchar(4) 最大只能4...create table t11(name varchar(4)) # 超出四个字符报错,不够四个有几个就几个 # 验证存储限制 insert into t12 values('hello');...,而varchar无法知道数据有多长,有个标志位来标识多长,要识别等,所以耗费时间就会相对较长一点 char 字段定长,就算只了一个字符,还是会占用字段宽度自负空间,会浪费空间 取时候方便,按固定字符数存取数据快...varchar时候根据字段记录实际长度存储(不超过指定长度),比较节省空间 取时候繁琐,不知道数据到底多长,存储速度相对char慢,(类似报头来确定长度) 前几年大量用char,近几年varchar

2.4K30

数据库varchar类型 最大长度是多少?

一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,...(在检索操作那些填补出来空格字符将被去掉)在varchar(M)类型数据列里,每个值只占用刚好够用字节再加上一个用来记录其长度字节(即总长度为L+1字节)....类型 被问到一个问题:MySQLvarchar最大长度是多少?...c) 行长度限制 导致实际应用varchar长度限制是一个行定义长度。 MySQL要求一个行定义长度不能超过65535。...表设计如下 id mediumint name varchar 问题是: MySQL5.1 , 在GBK字符环境下,这里varchar最长多长

7.2K20
领券