mysql 中length和char_length、bit_length的区别
mysql 中length和char_length、bit_length的区别: length()????返回以字节为单位测量的字符串长度。? char_length()????返回以字符为单位的字符串长度。 bit_length()??返回字符串的比特长度 实例: select?length(_utf8?'中国人'),?char_length(_utf8?'中国人'),select?bit_length('中国人') >>>?9,?3,?72 length() 在gbk编码下 select?length('中国人');?? >>>?6 1个中文字符占2个字节,所以总字节6。? (3*2=6) 在utf-8编码下 select?length('中国人');? >>>?9 1个中文字符占3个字节,总字节9。? (3*3*8=72) 英文字符串实例 SELECT?length('chenxm') >>?6 1个英文字符占1个字节,所以总bit比特长度6。? (6*1=6) char_length() 在gbk编码下 select?char_length('中国人');?? >>>?3 1个中文占1个字符 在utf-8编码下 select?char_length('中国人');? >>>?3 1个中文占1个字符 英文字符串实例 SELECT?char_length('chenxm') >>?6 1个英文字母占1个字符 bit_length() 在gbk编码下 select?bit_length('中国人');?? >>>?48 1个中文字符占2个字节,1个字节占8位,所以总bit比特长度48。? (3*2*8=48) 在utf-8编码下 select?bit_length('中国人');? >>>?72 1个中文字符占3个字节,1个字节占8位,所以总bit比特长度72。? (3*3*8=72) 英文字符串实例 SELECT?bit_length('chenxm') >>?48 1个英文字符占1个字节,1个字节占8位,所以结果为48.。? (6*1*8=48) MySQL 中一个汉字占多少存储? 1. 一个汉字占多少长度与编码有关: UTF8:一个汉字=3个字节 GBK:一个汉字=2个字节 2.varchar(n)能存储几个汉字? varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别 总结: 一、char_length(str) 1. 长度的单位为字符,一个多字节字符算作一个单字符 2. 不管汉字还是数字或者是字母都算是一个字符 二、length(str) 1. utf8编码下,一个汉字算三个字符,一个数字或字母算一个字符。 2. 其他编码下,一个汉字算两个字符,一个数字或字母算一个字符。 参考: https://stackoverflow.com/questions/1734334/mysql-length-vs-char-length http://www.mzh.ren/mysql-char_length-vs-length.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |