mysql varchar到底能存多少字符。】的更多相关文章

utf8编码的varchar Mysql记录行数据是有限的.大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节. Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节. 第一,当编码方式为utf-8时,varchar存到21845就存不下了.也就是最大长度是21844.根据上面信息可以推算出 ( 65535-2 )/3=21844余1 例子如下: GBK编码的v…
一.关于UTF-8 UTF-8 Unicode Transformation Format-8bit.是用以解决国际上字符的一种多字节编码. 它对英文使用8位(即一个字节) ,中文使用24位(三个字节)来编码. UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强. UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示.如果是UTF8编码,则在外国人的英文IE也能显示中文,他们无需下载IE的中文语言支持包. 二.关于GBK GBK 是国家标准GB2312基础上扩容后兼容G…
实践出真知,在SQL中,nvarchar(50)表示汉字和英文都是50,varchar(50)汉字25,英文50…
相信这个问题也会困扰不少人,尤其是使用过其它数据库(如Oracle)的人,之前我也没有太在意这个问题,再加上一些书籍和网上的文章讲的不够细致,又没测试过,导致我一直理解错误.下面通过实例来解释,在开始之前先简单介绍下字符和字节的区别.字符 人们使用的记号,抽象意义上的一个符号.一个汉字和英文就是一个字符,如'1', '中', 'a', '$', '¥',…… 字节 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间,如0x01, 0x45, 0xFA,……详细的可以参考http:…
char与varchar区别 char (13)长度固定, 如'1234567890' 存储需要空间 10个字符; varchar(13) 可变长 如'1234567890' 需要存储空间 11字符; 从上面可以看得出来char 长度是固定的,不管你存储的数据是多少他都会都固定的长度.而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置.所以实际应用中用户可以根据自己的数据类型来做. 再看看char,与varchar在速度上的区别:由于某种原因char 固定长度,所以在处理速度…
MySQL VARCHAR字段最大长度到底是多少   varchar(n),n表示什么? MySQL5.0.3之前varchar(n)这里的n表示字节数 MySQL5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个 n最大可以是多少 MySQL行长度 MySQL要求一个行定义长度不能超过65535个字节,不包括text.blob等大字段类型,varchar长度受此长度限制,和其他非大字段加起来不能超过65535个字节. 超过以…
最近在研究MySQL的数据类型,我们知道,选择合适的数据类型和数据长度对MySQL的性能影响是不可忽视的,小字段意味着可以MySQL可以读取更多的记录,从而加快查询速度. 网上该问题的答案有很多版本,还是通过实践得出的结论比较靠谱. 先说结论(MySQL版本5.7.27) CHAR最大255字符,字符集对CHAR没有影响,CHAR()括号内填写最大字符数255 VARCHAR最大65535字节,字符集对VARCHAR有影响 UTF8字符集,每个字符大小3字节,所以65535/3 = 21845,…
前言 程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨 知识准备 数据页 在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB.同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB.(确切的说是InnoDB数据页大小16KB).详细学习可以参考官网 我们可以用如下命令查询到. mysql> SHOW GLOBAL STATUS LIKE 'innodb_pa…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt337 VARCHAR 和 CHAR 是两种最主要的字符串类型 .不幸的是,很难精确地解释这些值是怎么 存储在磁盘和内存中的,因为这眼存储引擎的具体实现有关 .下面的描述假设使用的存 储引擎是 InnoDB 和 /或者My ISAM.如果使用的不是这两种存储引擎 ,请参考所使用 的存储引擎的文档. 先看看 VARC HAR 和 C HA R 值通常在磁盘上怎么存储 .请注意,…
http://dinglin.iteye.com/blog/914276 http://www.cnblogs.com/fakis/archive/2011/03/07/1976532.html   如果某一项中设置的是varchar(50) 那么对英文当然是50 那么对中文呢 utf-8的中文占3个字节 那么,这个varchar(50)是不是只能存16个汉字了?   不是这样的,mysql低版本之前是这样的,但是5.0以后就不是了   mysql varchar(50)  不管中文 还是英文…
varchar和char是两种最主要的字符串类型.不幸的是,很难精确地解释这些值是怎么储存在磁盘和内存中的,因为这根存储引擎的具体实现有关.下面的描述假设使用的存储引擎是InnoDB或者MyISAM.如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档. 先看看varchar和char值通常在磁盘上怎么存储的.请注意,存储引擎存储char或者varchar值的方式在内存中和磁盘上可能不一样,所以MySQL服务器从存储引擎读出的值可能需要转换成另一种存储格式.下面是关于两种类型的一些比较.…
1.错误提示: mysql的Data truncation: Data too long for column 'path' at row 1 错误原因: 1.字段过长而导致出错的, 2. 可能是因为数据库里的表设置的字符集不相同. 解决办法: varchar(10) ——>varchar(20) alter table `cms_activity_test` convert to character set gbk collate gbk_chinese_ci;(单独修改指定表的字符集) 其他…
java String长度与varchar长度匹配理解(字符和字节长度理解) string中的length()长度,返回的是char的数量,每个char可以存储世界上任何类型的文字和字符,一个char 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中…
MySQL 中将 varchar 字段转换成数字进行排序 - MySQL - 大象笔记 https://www.sunzhongwei.com/order-by-varchar-field-which-is-converted-into-number-in-mysql mysql 对varchar型数字排序-云栖社区-阿里云https://yq.aliyun.com/articles/392822 Mysql的varchar排序按照数字顺序 - ROVAST的专栏 - CSDN博客https:/…
问题:Mysql插入数据里有中文字符出现Incorrect string value的错误   描述:CMD里直接敲代码插入数据   提示的部分截取为:ERROR 1366 (HY000): Incorrect string value   一般都是编码问题,show variables like 'character%' 查看后,发现所有编码都为UTF8,并没有错.   也有一种可能是CMD黑窗口的文字编码问题,试着先设置客户端命令的编码,再插入果然正确!然后百度搜索客户端编码相关的问题也发现…
先来个最基本的总结阐述,希望各位小伙伴认真的读一下,哈哈: 1)客户端(运行程序)先通过连接器连接到MySql服务器. 2)连接器通过数据库权限身份验证后,会先查询数据库缓存是否存在(之前执行过相同条件的SQL查询),如果有会直接返回缓存中的数据.如果没有则会进入分析器. 3)进入分析器后会对查询语句进行词法语法的分析,判断该查询语句SQL是否存在语法错误,如果存在查询语法词法错误,会直接返回给客户端错误,如果正确则会进入优化器. 4)优化器会对查询语句进行优化处理:例如:如果一条语句用到了多个…
MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小. MySQL 数据库的varchar类型在4.…
4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节) 5.0版本以上,varchar(50),指的是50字符,无论存放的是数字.字母还是UTF8汉字(每个汉字3字节),都可以存放50个 其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在mysql都5.0已上了,varchar(50)是可以存50个汉字的 以上得到验证,的确是这样,使用sql语句能插入,但是会被截断,但是使用框架(r如mybatis和hibernate还是会抛出异…
1.数据库连接设置编码格式为UTF-8 jdbc:mysql://localhost:3306/jbpm_test?useUnicode=true&characterEncoding=UTF-8 jdbc:mysql://localhost:3306/jbpm_test?useUnicode=true&characterEncoding=UTF-8 2.建设数据库…
自己的一个例子,在存储一个email的需求中.mysql定义的字段,类型:varchar 长度:20 当我插入一个email:huangyuande@sailvan.com  发现怎么样都差不进去..后面才发现原来是字段长度20不够存放..下次要注意,当然,字段长度设定也不能过于大,够用即可. 以下为转发: 今天新开始的项目在做数据库设计,发现自己对MySql的varchar类型还不熟悉,故又上网收集资料整理如下. 1.varchar类型的变化 MySQL 数据库的varchar类型在4.1以下…
如果被 varchar 超过上述的 b 规则,被强转成 text 类型,则每个字段占用定义长度为 11 字节,当然这已经不是 varchar 了4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字.字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同. 1…
问题:使用QSqlDataBase类建立连接MySql数据库驱动加载失败 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QOCI8 QOCI QODBC3 QODBC QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will…
2013年9月13日 14:58:43 MYSQL的varchar数据类型 先说结论: 如果设置字段长度为30,字符编码为utf8,那么一个汉字算一个字符,一个数字算一个字符,一个字母也算一个字符 版本号: mysql> \s -------------- mysql Ver -rc, for Win32 (ia32) 测试表 mysql> desc kw; +-------+-------------+------+-----+---------+-------+ | Field | Typ…
有字段,a,b: a存的是:2016-10-10 b存的是:10:15:30 mysql将字段合并: concat(a, ' - ', b)  或者 concat(a, ' ', b) 字符时间转时间戳 unix_timestamp( concat(a, ' ', b) ) 别名字段作为where条件: 在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件.比如有下面一个表: select     ID,     title,     concept,     conceptLength…
ASP.NET Core 中使用 MySql,如果字段类型为varchar,不管设置多少长度,插入或更新数据的时候,会自动截断(截取 255 长度的字符). 出现问题的原因,就是使用了MySql.Data.EntityFrameworkCore程序包(我使用的版本是7.0.7-m6),可能是其版本问题,升级版本的话,可能问题不会出现了. 解决方式:将 MySql 所有字段类型为varchar(字段长度大于 255)的字段,类型都改为text(可以不设长度,默认为 0). 然后,EF Core 映…
在mysql数据库中性别字段以前存的是'男'和'女',使用varchar类型存储的,但是在我mongo库中这个字段使用的是'1'和'0'存储的,在两个库之间的数据转换就很不方便,于是想要统一存储类型,把mysql中的'男'和'女'转化为'1'和'0'.本以为varchar不能直接转换为tinyint类型,经过测试发现只要是原来的varchar类型数据是数字就可以进行修改.首先把数据转换为数字类型,再进行存储类型的转换.代码如下: WHERE sex = '女'; WHERE sex = '男';…
CHAR 类型的一个变体是 VARCHAR 类型,char(M),M是指字节长度,和varchar(M)一样 故障原因:mysql主键设置为int(9),但数据量已经大于int(9)的范围了 tips:int最大长度是11. 如果在建表时不指定字段int类型的长度时,系统则默认生成长度为11的字段. 解决过程中的坑:因为更改字段类型太慢(亿级数据量),就新建了个相同结构的表,然后更改代码中的sql准备把应用启动起来. 问题1:因为shell脚本是在notepad++中修改的,修改后没有保存,导致…
MySQL 表中行的最大大小为 65,534(实际行存储从第二个字节开始)字节.每个 BLOB 和 TEXT 列只占其中的 5 至 9 个字节. 那么来验证下 varchar 类型的实际最大长度: 测试环境:MySQL版本 5.7.19 //首先要设置下 mysql 为严格执行模式,不然 varchar 超出最大长度为自动转为 text 类型 set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION&…
preface: 近期帮师兄处理json文件,须要读到数据库里面,以备其兴许从数据库读取数据.数据是关于yelp站点里面的: https://github.com/Yelp/dataset-examples,http://www.yelp.com/dataset_challenge/. 涉及到一些json和sql的问题,记录下. 一.python sql安装 python 自带轻型数据库sqlite,只是用不了.须要mysql才行.pip安装mysql失败.easy_install安装也失败.这…
varchar(N) 能存多少个中文字符? 4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个中文3字节) gbk :每个字符最多占用2个字节 utf8:每个字符最多占用3个字节 5.0版本以上,varchar(50),指的是50字符,无论存放的是数字.字母还是UTF8中文(每个中文3字节),都可以存放50个,是的 varchar(50)是可以存50个汉字的!…