MySQL 使用 length 检测 vachar 字节长度

有一个test表里面有一个自增id和字段str(varchar(255))

insert into test value (1, '测')
SELECT id, LENGTH(str), CHAR_LENGTH(str) FROM test;

返回结果是 1 3 1

使用的是utf8编码,我理解的
varchar字段长度n<=255 varchar字段长度=1+N;
varchar字段长度n>255 varchar字段长度=2+N;
结果应该是 1 4 1,需要额外的一个字节保存长度,那么 length(str)应该是4啊,怎么是3呢?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
wenqingzzz
最佳答案

自己理解一下,mysql lenght是字符串所占的字节,并没有计算额外的所需字节。自己搞错了

4年前 评论
讨论数量: 2
wenqingzzz
ALTER TABLE `test`
ADD COLUMN `str2`  varchar(2000) NULL AFTER `str`;
SELECT id, LENGTH(str2), CHAR_LENGTH(str2) FROM test where id = 2;

添加了一个str2字段,然后插入256个汉字,返回结果是
2 768 256

4年前 评论
wenqingzzz

自己理解一下,mysql lenght是字符串所占的字节,并没有计算额外的所需字节。自己搞错了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!