版权声明:本文为博主原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。
适用于MySQL 5.6及以上
- 如需了解MySQL所有类型的长度定义、存储开销,可以参考《MySQL所有类型的长度范围、存储开销(区分显示宽度/有无符号)》
- 如需评估数据库/表/行的存储开销,可以参考《MySQL如何评估数据量(行大小、数据存储和索引存储)》
- 更多基础命令可参考《https://learn.blog.csdn.net/article/category/9232935》
定义
char_length
、length
、bit_length
都是mysql内置的字符串函数,用于计算字符串的长度1。
- 非字符串会先转为字符串,再执行长度计算
char_length
与CHARACTER_LENGTH
函数作用相同
区别
三个函数计算的单位不同:
char_length
:字符length
:字节(Byte)bit_length
:二进制位(bit)。
例:中文环境下常见的是汉字的区别,一个汉字的长度(UTF8编码),分别为1、3、24
测试
select char_length("12"), char_length("ab"), char_length("中文")
select length("12"), length("ab"), length("中文")
select bit_length("12"), bit_length("ab"), bit_length("中文")
结果:
数字 (12) |
字母 (ab) |
中文 (中文) |
|
---|---|---|---|
char_length |
2 | 2 | 2 |
length |
2 | 2 | 6 |
bit_length |
16 | 16 | 48 |
总结
命令 | 单位 | 一个汉字 | 一个数字or字母 | 示例 |
---|---|---|---|---|
char_length |
字符 | 1 | 1 | char_length(str) |
length |
Byte | 3 | 1 | length(str) |
bit_length |
bit | 24 | 8 | length(str) |
当字符串的长度,超过
max_allowed_packet
定义的最大长度,上述函数将返回NULL。
max_allowed_packet
一般默认为4MB(5.6.5及一下为1MB)2
- 如需了解MySQL所有类型的长度定义、存储开销,可以参考《MySQL所有类型的长度范围、存储开销(区分显示宽度/有无符号)》
- 如需评估数据库/表/行的存储开销,可以参考《MySQL如何评估数据量(行大小、数据存储和索引存储)》
- 更多基础命令可参考《https://learn.blog.csdn.net/article/category/9232935》
以上。感谢您的阅读。