mysql中的設定varchar長度問題

時間 2021-06-07 01:20:41

1樓:匿名使用者

mysql varchar(50) 不管中文 還是英文 都是存50個的

mysql5的文件,其中對varchar欄位型別這樣描述:varchar(m) 變長字串。m 表示最大列長度。

m的範圍是0到65,535。(varchar的最大實際長度由最長的行的大小和使用的字符集確定,最大有效長度是65,532位元組)。

為何會這般變換?真是感覺mysql的手冊做的太不友好了,因為你要仔細的繼續往下讀才會發現這段描述:mysql 5.

1遵從標準sql規範,並且不刪除varchar值的尾部空格。varchar儲存時用一個位元組或兩個位元組長的字首+資料。如果varchar列宣告的長度大於255,長度字首是兩個位元組。

好了,貌似懂了一點。但具體他說的長度大於255時使用2個位元組長度字首,小學減法題:65535 - 2 = 65533啊。不知道這些大牛如何計算的,暫且保留疑問吧?

注:我測試了一下使用utf8編碼,varchar的最大長度為21854位元組。

在mysql 5.0.45版本,資料庫編碼utf8下進行測試:varchar最長定義為21785。也就是說不論字母、數字、漢字,只能放21785個。

推想:varchar位元組最大65535,utf8編碼一個字元3個位元組65535/3=21785。

2樓:

25個漢字

數字是50個

英文也是50個

這個型別你可以定義大點都無所謂

mysql 我定義了一個欄位為 varchar(255)我想把長度改的大一點,怎麼弄??

3樓:匿名使用者

varchar的最大實際長度由最長的行的大小和使用的字符集確定。最大拿返有效長度是65,532位元組

如果unicode字元由2個位元組表示,則芹殲編碼成utf-8很可能需要3個位元組

varchar(21845)消首飢 裡面 21845 * 3 = 65535. 超過了 65532位元組的上限。

4樓:嘿呦我來也

如果長度 大於varchar(8000), 建議槐咐 你直接用text的 varchar也是擾橋有長度限鉛李純制的 varchar(n) n範圍是 0

mysql中怎麼設定字符集,mysql中怎麼修改某一資料庫的預設字符集

character introducer翻譯過來就是字元引導。也就是針對字串,顯式的給定一個字元編碼和排序規則,不受系統引數的影響。總結 introducer 使用規則 1.convert 函式 convert 函式類似於 introducer,不過只能指定字符集。2.charset 函式 檢測字串...

MySQL中的float和decimal型別有什麼區別

維灣教育培訓 decimal 型別可以精確地表示非常大或非常精確的小數。大至 1028 正或負 以及有效位數多達 28 位的數字可以作為 decimal型別儲存而不失其精確性。該型別對於必須避免舍入錯誤的應用程式 如記賬 很有用。float是浮點數,不能指定小數位。decimal是精確數,可以指定精...

MySQL中myisam和innodb的主鍵索引有什麼區別

innodb 被稱為索引組織型的儲存引擎。主鍵使用的 b tree 來儲存資料,即錶行。這意味著 innodb 必須使用主鍵。如果表沒有主鍵,innodb 會向表中新增一個隱藏的自動遞增的 6 位元組計數器,並使用該隱藏計數器作為主鍵。innodb 的隱藏主鍵存在一些問題。您應該始終在表上定義顯式主...