首页 数据库 mysql教程 Mysql varchar大小长度问题_MySQL

Mysql varchar大小长度问题_MySQL

Jun 01, 2016 pm 01:50 PM
20 汉字

bitsCN.com 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。

1、限制规则

字段的限制在字段定义的时候有以下规则:

a)  存储限制

varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

b) 编码长度限制

字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。

c)  行长度限制

导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

 

2、计算例子

举两个例说明一下实际长度的计算。

a)  若一个表只有一个varchar类型,如定义为

create table t4(c varchar(N)) charset=gbk;

则此处N的最大值为(65535-1-2)/2= 32766。

减1的原因是实际行存储从第二个字节开始’;

减2的原因是varchar头部的2个字节表示长度;

除2的原因是字符编码是gbk。

b)  若一个表定义为

create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;

则此处N的最大值为 (65535-1-2-4-30*3)/3=21812

减1和减2与上例相同;

减4的原因是int类型的c占4个字节;

减30*3的原因是char(30)占用90个字节,编码是utf8。

 

如果被 varchar 超过上述的 b 规则,被强转成 text 类型,则每个字段占用定义长度为 11 字节,当然这已经不是“ varchar ”了。

bitsCN.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Bybit交易所最新版本怎么更新?不更新会有影响吗? Bybit交易所最新版本怎么更新?不更新会有影响吗? Feb 21, 2025 pm 10:54 PM

更新ByBit交易所的方式因平台和设备而异:移动设备:在应用商店中检查更新并安装。桌面客户端:在“帮助”菜单中检查更新并自动安装。网页端:需要手动访问官网进行更新。不更新交易所可能导致安全漏洞、功能限制、兼容性问题和交易执行效率降低。

一个汉字的机内码需要几个字节储存 一个汉字的机内码需要几个字节储存 Dec 14, 2020 pm 05:45 PM

一个汉字的机内码需要2个字节储存。在国内流行的汉字系统中,一个汉字的机内码占2个字节,因为汉字处理系统要保证中西文的兼容,当系统中同时存在ASCII码和汉字国标码时,将会产生二义性;为此,汉字机内码应对国标码加以适当处理和变换。

gateio官方下载地址 gateio官方下载安卓版 gateio官方下载地址 gateio官方下载安卓版 Feb 21, 2025 pm 03:00 PM

Gate.io提供官方移动应用程序,允许用户通过以下步骤下载安卓版:访问官方网站,点击“下载”按钮,选择“安卓”选项,扫描QR码或点击“Google Play”链接。目前,Gate.io不提供官方iOS移动应用程序,用户可通过移动网络浏览器访问网站或通过Android模拟器或第三方服务在iOS设备上安装安卓版。

掌握 PHP 处理汉字转码的技巧 掌握 PHP 处理汉字转码的技巧 Mar 28, 2024 pm 03:47 PM

PHP是一种广泛使用的服务器端脚本语言,常用于网站开发。在网站开发过程中,经常会遇到对汉字进行转码的需求,特别是在处理中文字符时。掌握PHP处理汉字转码的技巧,能够有效避免乱码等问题,提高网站的稳定性和用户体验。1.utf8_encode和utf8_decode函数在PHP中,可以使用utf8_encode和utf8_decode函数进行汉字的编码和解码操

深入了解PHP中汉字转UTF-8编码的原理 深入了解PHP中汉字转UTF-8编码的原理 Mar 28, 2024 pm 02:44 PM

汉字转UTF-8编码的原理实际上涉及到字符编码的概念。在计算机中,文字字符需要以数字的形式进行表示和存储,而不同的字符编码方案规定了不同字符到数字之间的对应关系。UTF-8是一种常用的字符编码方式,它支持全球范围内的字符,并且采用可变长度的编码方式,能够有效地表示各种语言的字符,特别适用于Unicode字符集。PHP作为一种常见的服务器端脚本语言,也提供了对

win11汉字输入问题解决方法 win11汉字输入问题解决方法 Jan 05, 2024 am 08:29 AM

我们在安装win11系统之后,首先必须要安装win11中文输入法才能打出汉字,如果在安装中文输入法之后,还是无法打出汉字,那么可能是相关服务被禁用了,将它重启即可,下面就一起来看一下吧。win11打不出汉字怎么办:1、首先我们要确保自己已经下载安装了中文输入法,或者第三方输入法软件。2、如果大家不知道如何添加输入法的话,可以查看本站的教程。3、如果添加完输入法,还是无法打汉字,那么就需要开启相关服务了。4、首先右键开始菜单,找到其中的“计算机管理”5、然后依次进入“任务计划程序”-“任务计划程序

数字货币排名前十交易软件(2025最近更新) 数字货币排名前十交易软件(2025最近更新) Feb 14, 2025 pm 05:33 PM

随着数字货币市场的蓬勃发展,买卖数字资产变得比以往任何时候都更加容易。本文重点介绍了 2025 年排名前十的数字货币交易软件,这些软件可以帮助交易者轻松安全地参与数字货币市场。我们根据用户友好性、安全措施、费用和其他关键因素对这些软件进行了评估,以提供交易者做出明智决定的全方位指南。

亚洲币圈十大交易所排名2025最新排名 亚洲币圈十大交易所排名2025最新排名 Feb 14, 2025 pm 11:12 PM

随着虚拟货币市场的蓬勃发展,亚洲地区的加密货币交易所也在迅速崛起。本文整理了 2025 年最新的亚洲币圈十大交易所排名,为投资者提供了选择可靠交易平台的权威参考。排名依据交易量、资产数量、安全性和用户体验等多个维度综合评定,旨在帮助投资者甄选出适合自身交易需求的最佳交易所。

See all articles