梅开二度,亦无一度好
欢迎光临一度好
更多>> 数据库
MySQL中 varchar(12) 可以存储多少个汉字
来源:一度好    发布时间:2019-12-18    访问量:285
内容简介 涉及到字符串函数 length 和 char_length 计算单位的区别,以及编码 utf8 和 gbk 对汉字占用几个字节的区别。

一、length(str) 和 char_length(str) 的区别

1、length(str)

返回字符串 str 的长度,单位为字节。一个多字节字符算作多字节。

2、char_length(str)

返回字符串 str 的长度,单位为字符。一个多字节字符算作一个单字符。

这意味着对于一个包含5个2字节字符的字符串,length()的返回值是 10,而 char_length() 的返回值则为 5。


二、UTF-8 编码与 GBK 编码的区别

1、UTF8 编码数据表

(1)创建表

CREATE TABLE `my_test_utf8` (
  `my_id` int(11) NOT NULL AUTO_INCREMENT,
  `my_name` varchar(12) DEFAULT NULL,
  PRIMARY KEY (`my_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='my_test  UTF8';

(2)插入一条数据:

44.jpg

(3)检索长度

SELECT length(my_name), char_length(my_name), my_name FROM `my_test_utf8` where my_id=1;

返回值如下:

bbb.jpg

2、GBK 编码的数据表

(1)创建表

CREATE TABLE `my_test_gbk` (
  `my_id` int(11) NOT NULL AUTO_INCREMENT,
  `my_name` varchar(12) DEFAULT NULL,
  PRIMARY KEY (`my_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=gbk COMMENT='my_test GBK';

(2)插入一条数据:

33.jpg

(3)检索长度

SELECT length(my_name), char_length(my_name), my_name FROM `my_test_gbk` where my_id=1;

返回值如下:

aaa.jpg


三、总结

对于 UTF8 编码,一个汉字,即一个字符,占 3 个字节。

对于 GBK 编码,一个汉字,即一个字符,占 2 个字节。

MySQL 4.0 版本以下,以字节解释长度。

MySQL 5.0 版本以上,以字符解释长度。

所以 varchar(12) 可存储 12 个汉字,即 12 个字符。


(编辑:一度好)
标签: mysql | varchar | char | length | char_length | utf8 | gbk
下一篇: 没有了
评论
暂时没有相关记录
发表评论
昵 称: *
邮 箱: *
验证码: * captcha 看不清?点击图片换一张
点击排行榜
首页 / 加入收藏 / 关于本站 / 友情链接 / WAP版