MySQL计算字段长度/大小(length、bit_length、char_length函数对比) - MySQL基本函数和命令(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zgdwxp/article/details/102501976

适用于MySQL 5.6及以上

定义

char_lengthlengthbit_length都是mysql内置的字符串函数,用于计算字符串的长度1

  • 非字符串会先转为字符串,再执行长度计算
  • char_lengthCHARACTER_LENGTH函数作用相同

区别

三个函数计算的单位不同:

  1. char_length:字符
  2. length:字节(Byte)
  3. 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


以上。感谢您的阅读。


  1. MySQL官方文档 - 字符串函数与运算符:https://dev.mysql.com/doc/refman/5.6/en/string-functions.html ↩︎

  2. MySQL官方文档 - 服务器系统变量集:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_max_allowed_packet ↩︎

猜你喜欢

转载自blog.csdn.net/zgdwxp/article/details/102501976