MySQL 5.1中varchar類型中文和英文長度的問題

來源:互聯網
上載者:User

今天,也是突發奇想,在MySQL上驗證varchar(15)會存15個中文,超過的會自動截取前15個。 一直抱守舊的觀念(這種觀念可能來源與sql server),varchar類型中,中文佔兩個位元組,因此只能存varchar長度的一半的中文字數。但實際上,在MySQL中不管是中文還是英文,都是長度值,只是資料庫”的文章">資料庫選擇不同字元編碼時,varchar最大長度不一樣,但同一編碼下英文和中文的長度是一樣。

MySQL5的文檔,其中對varchar欄位類型這樣描述:varchar(m) 變長字串。M 表示最大列長度。M的範圍是0到65,535。(VARCHAR的最大實際長度由最長的行的大小和使用的字元集確定,最大有效長度是65,532位元組)。

MySQL 5.1遵從標準SQL規範,並且不刪除VARCHAR值的尾部空格。VARCHAR儲存時用一個位元組或兩個位元組長的首碼+資料。如果VARCHAR列聲明的長度大於255,長度首碼是兩個位元組。

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.