环境: MySQL
注意点:
char(N) 和 varchar(N) 这里的N指的是字符长度,而不是字节长度。就是说可以插入N个字符的长度的内容(不管插入的是英文还是中文,反正是按照长度算的)。
看如下例子:
> CREATE table t1 ( a CHAR(3)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
> CREATE table t2 ( a CHAR(3)) ENGINE=InnoDB DEFAULT CHARSET=gbk ;
> SELECT a ,length(a),CHAR_LENGTH(a) from t1;
+--------+-------------+------------------+
| a | length(a) | CHAR_LENGTH(a) |
|--------+-------------+------------------|
| 111 | 3 | 3 |
| 你好啊 | 9 | 3 | utf8字符集,一个汉字占3个字节宽度,因此这里length(a)是9bytes长度,字节长度为9
+--------+-------------+------------------+
# length(): 计算的是内部存储时候这个字段在磁盘上占据的长度。 一个汉字是算三个字符,一个数字或字母算一个字符
# CHAR_LENGTH(): 计算的是字段字符串的长度。不管汉字还是数字或者是字母都算是一个字符
> SELECT a ,length(a),CHAR_LENGTH(a) from t2;
+--------+-------------+------------------+
| a | length(a) | CHAR_LENGTH(a) |
|--------+-------------+------------------|
| 你好啊 | 6 | 3 | GBK编码,一个汉字占2个字节,因此这里length(a)是6bytes长度,字节长度为6
| 111 | 3 | 3 |
+--------+-------------+------------------+
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有