mysql中的設定varchar長度問題

2021-08-27 07:46:09 字數 765 閱讀 4300

**:

如果某一項中設定的是varchar(50)

那麼對英文當然是50

那麼對中文呢

utf-8的中文佔3個位元組

那麼,這個varchar(50)是不是只能存16個漢字了?

mysql varchar(50) 不管中文 還是英文 都是存50個的 (適用於mysql5,低版本不支援)

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。

MySql中varchar和varchar的區別

看了新公司的資料庫設計,有些問題思考了一下,寫這篇文章也就記錄這個問題的思考過程。首先從占用空間進行比較,varchar 10 宣告10個位元組,資料儲存時額外乙個位元組的長度字首 varchar 1000 宣告1000個位元組,如果資料長度大於255,長度字首是兩個位元組。而實際varchar資料...

MySQL資料庫中CHAR與VARCHAR之爭

在資料庫中,字元型的資料是最多的,可以佔到整個資料庫的80 以上。為此正確處理字元型的資料,對於提高資料庫的效能有很大的作用。在字元型資料中,用的最多的就是char與varchar兩種型別。前面的是固定長度,而後面的是可變長度。現在我們需要考慮的是,在什麼情況下使用char字元型資料,什麼情況下採用...

MySQL資料庫中CHAR與VARCHAR之爭

在資料庫中,字元型的資料是最多的,可以佔到整個資料庫的80 以上。為此正確處理字元型的資料,對於提高資料庫的效能有很大的作用。在字元型資料中,用的最多的就是char與varchar兩種型別。前面的是固定長度,而後面的是可變長度。現在我們需要考慮的是,在什麼情況下使用char字元型資料,什麼情況下採用...