mysql中varchar类型的字段,如果存储中文字符,那么可以varchar(32)可以存储多少个中文字符?
tb_fruit表中有字段name。
函数char_length(field_name>)和函数length(field_name)都表示该字段的长度。
char_length()和length()有什么区别呢?
(以下信息中隐藏了无关信息):
> desc tb_fruit;
+--------+-------------+------+-----+---------+--------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+--------+
| name | varchar(12) | YES | | NULL | |
+--------+-------------+------+-----+---------+--------+
> update tb_fruit set name='12' where id=63;
> select id,name,char_length(name),length(name) from tb_fruit where id=63;
+----+------+-------------------+--------------+
| id | name | char_length(name) | length(name) |
+----+------+-------------------+--------------+
| 63 | 12 | 2 | 2 |
+----+------+-------------------+--------------+
> update tb_fruit set name='一二' where id=63;
> select id,name,char_length(name),length(name) from tb_fruit where id=63;
+----+------+-------------------+--------------+
| id | name | char_length(name) | length(name) |
+----+------+-------------------+--------------+
| 63 | 一二 | 2 | 6 |
+----+------+-------------------+--------------+
> update tb_fruit set name='12345678901234567890' where id=63;
> select id,name,char_length(name),length(name) from tb_fruit where id=63;
+----+--------------+-------------------+--------------+
| id | name | char_length(name) | length(name) |
+----+--------------+-------------------+--------------+
| 63 | 123456789012 | 12 | 12 |
+----+--------------+-------------------+--------------+
> update tb_fruit set name='一二三四五六七八九十百千万亿兆' where id=63;
> select id,name,char_length(name),length(name) from tb_fruit where id=63;
+----+------------------------------+-------------------+--------------+
| id | name | char_length(name) | length(name) |
+----+------------------------------+-------------------+--------------+
| 63 | 一二三四五六七八九十百千 | 12 | 36 |
+----+------------------------------+-------------------+--------------+
结论
- varchar(12)指的是最多有多少个字符,包括中文字符。
- char_length()=指存储的字符的数目,包括中文字符。
- length()指存储的字符的实际所占字节数,一个中文字符可能占三个byte