| 數據庫 | 定義 | 可存 10 字符 | 可存漢字數 |
|---|---|---|---|
| Oracle | VARCHAR2(10) | 10 | 3(1 漢字=3 字節) |
| MySQL 5.1 | VARCHAR(10) | 10 | 10(1 漢字=1 字符) |
VARCHAR2 長度單位為字節(Byte)。UTF-8 下漢字佔 3 字節,故 10 字節只能存 3 個漢字。VARCHAR(M) 長度單位為字符(Character),與字節無關。M 表示最大字符數,無論字母、數字、漢字、Emoji,最多存 M 個字符。VARCHAR(21845) 可建表,VARCHAR(21846) 報錯 Row size too large。65535 / 3 ≈ 21845(全漢字極限)。LENGTH('漢') → 3 字節;CHAR_LENGTH('漢') → 1 字符。CHAR(10):固定儲存 10 字符,不足右補空格,讀取去除尾部空格。VARCHAR(M) M = 字符數,非字節數。VARCHAR2(M) M = 字節數(預設),可指定 CHAR 語義。CHECK (LENGTH(col) <= 100) 或應用層校驗。