適用於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》
以上。感謝您的閱讀。