萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 字符串長度函數全解析:LENGTH vs CHAR_LENGTH vs CHARACTER_LENGTH vs BIT_LENGTH

四大函數對比表

函數返回單位多字節字符(如中文)適用場景
LENGTH(str)字節數UTF8 中文=3 字節,UTF8MB4=4 字節存儲空間計算、網絡傳輸大小
CHAR_LENGTH(str)字符數1 字符 = 1業務邏輯長度校驗(用戶名/密碼/標題)
CHARACTER_LENGTH(str)字符數同 CHAR_LENGTH標準 SQL 別名,功能完全相同
BIT_LENGTH(str)位數字節數 × 8極少用,位運算場景

實測範例


mysql> SELECT
    LENGTH('你好') AS len_bytes,
    CHAR_LENGTH('你好') AS len_chars,
    BIT_LENGTH('你好') AS len_bits;
+-----------+-----------+----------+
| len_bytes | len_chars | len_bits |
+-----------+-----------+----------+
|         6 |         2 |       48 |
+-----------+-----------+----------+
-- UTF8: 每個中文 3 字節 = 24 位,兩字共 6 字節 = 48 位

實戰:查詢用戶名長度 < 6 字符的用戶


-- 業務邏輯按「字符數」判斷,必須用 CHAR_LENGTH
SELECT * FROM admin WHERE CHAR_LENGTH(username) < 6;

-- 若誤用 LENGTH,UTF8 下「張三」(2字符) = 6字節,會被誤判為不滿足

字符集影響對照

字符集中文字節數英文/數字字節數
latin1不支援1
gbk21
utf831
utf8mb441

CHAR_LENGTH 在所有字符集下統一返回字符數,是跨字符集遷移的安全選擇。

總結口訣

存儲算 LENGTH,業務算 CHAR_LENGTH,標準寫 CHARACTER_LENGTH,BIT_LENGTH 幾乎不用。

copyright © 萬盛學電腦網 all rights reserved