Mysql数据库中的字段长度是指字节还是字符?? 是指当前字符集的字符长度

本文通过实验展示了MySQL中字符集设置对字符长度的影响。使用UTF8字符集时,每个字符占用1-3个字节,长度限制由字符而非字节决定。实验包括创建表、插入ASCII与中文字符,验证不同字符数量时的执行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 的字符大小和字符集有关,如果字符集是 ascii,保存不了中文(会显示成乱码),如果是 UTF8,每个字符是1-3个字节。

用事实说话

试验用的 MySQL 5.6

先检查数据库字符集

show variables like '%char%';

结果:UTF8

Variable_nameValue
character_set_clientutf8mb4
character_set_connectionutf8mb4
character_set_databaseutf8
character_set_filesystembinary
character_set_resultsutf8mb4
character_set_serverutf8
character_set_systemutf8
character_sets_dirD:\Program Files\MySQL\MySQL Server 5.6\share\charsets\

创建表(注意:varchar(10)

CREATE TABLE `test_char` (
    `s` VARCHAR(10) NULL DEFAULT NULL
)

插入数据

十字ASCII字符,正确执行

insert into test_char
(s)
values
('0123456789')
;

十个中文字符,正确执行

insert into test_char
(s)
values
('一二三四五六七八九十')
;

但是十一个ASCII或中文都是报错,说数据太长。

结论

长度是当前字符集的字符长度,而不是字节长度!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值