更多>>数据库 Blog
来源:一度好 时间:2019-12-18 阅读:5343
涉及到字符串函数 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)插入一条数据:
(3)检索长度
SELECT length(my_name), char_length(my_name), my_name FROM `my_test_utf8` where my_id=1;
返回值如下:
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)插入一条数据:
(3)检索长度
SELECT length(my_name), char_length(my_name), my_name FROM `my_test_gbk` where my_id=1;
返回值如下:
三、总结
对于 UTF8 编码,一个汉字,即一个字符,占 3 个字节。
对于 GBK 编码,一个汉字,即一个字符,占 2 个字节。
MySQL 4.0 版本以下,以字节解释长度。
MySQL 5.0 版本以上,以字符解释长度。
所以 varchar(12) 可存储 12 个汉字,即 12 个字符。
评论列表 |
暂时没有相关记录
|
发表评论