MySQL計算字段長度/大小(length、bit_length、char_length函數對比) - MySQL基本函數和命令(一)

適用於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 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章