mysql中varchar长度和char_length()和length()的区别

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 |
+----+------------------------------+-------------------+--------------+

结论

  1. varchar(12)指的是最多有多少个字符,包括中文字符。
  2. char_length()=指存储的字符的数目,包括中文字符。
  3. length()指存储的字符的实际所占字节数,一个中文字符可能占三个byte
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值