在優化存儲或排查數據截斷問題時,常需確認字段實際佔用的字節長度。MySQL 提供 LENGTH() 函數返回字符串的字節長度(非字符數)。
CREATE TABLE tmp13(vb VARBINARY(10));
INSERT INTO tmp13 (vb) VALUES(12);
SELECT LENGTH(vb) FROM tmp13; -- 返回 2
INSERT INTO tmp13 (vb) VALUES(1212);
SELECT LENGTH(vb) FROM tmp13; -- 返回 4
VARBINARY(N):儲存二進制字節,最大 N 字節,不按字符集處理,LENGTH() 直接返回實際字節數。VARCHAR(N):若字符集為 UTF8MB4,單字符最多 4 字節,LENGTH() 返回字節數,CHAR_LENGTH() 返回字符數。LENGTH() = 字節長度;CHAR_LENGTH() = 字符長度。SELECT MAX(LENGTH(col)) FROM tbl 確認實際最大字節數。VARBINARY 或 BLOB,避免字符集轉換開銷。一句話總結: 用 LENGTH() 看字節,用 CHAR_LENGTH() 看字符,字符集不同結果可能大相徑庭。