首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL VARCHAR 長度單位深度解析:字符而非字節,UTF8/GBK 下的最大長度計算

     編輯:MySQL 資料庫相關知識

核心結論

VARCHAR(n) 的 n 代表字符數,而非字節數。無論中文、英文、Emoji,每個字符計數為 1。

實測驗證

UTF8 字符集

CREATE TABLE t(name VARCHAR(10)) CHARSET=utf8;
INSERT INTO t VALUES('1234567890');           -- 10 字節,10 字符 ✓
INSERT INTO t VALUES('一二三四五六七八九十'); -- 30 字節,10 字符 ✓
INSERT INTO t VALUES('一二三四五六七八九十1'); -- 31 字節,11 字符 ✗ ERROR 1406

GBK 字符集

CREATE TABLE t(name VARCHAR(10)) CHARSET=gbk;
INSERT INTO t VALUES('一二三四五六七八九十'); -- 20 字節,10 字符 ✓

長度函數對比

函數返回值示例:'一二三'
LENGTH()字節數UTF8: 9, GBK: 6
CHAR_LENGTH()字符數3

最大定義長度計算

  • MySQL 單行上限 65,535 字節(全列共享)
  • UTF8:每字符最多 3 字節 → 65,535 / 3 ≈ 21,845
  • UTF8MB4:每字符最多 4 字節 → 65,535 / 4 ≈ 16,383
  • GBK:每字符最多 2 字節 → 65,535 / 2 ≈ 32,767

CHAR 類型補充

  • 定長,長度單位同為字符
  • 最大長度 255 字符
  • 存儲時右側填充空格,讀取時去除

版本差異提示

MySQL 4.x 時代 VARCHAR 長度單位為字節,5.0+ 統一改為字符。舊專案遷移需注意。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved