MySQL 5.1中varchar類型中文和英文長度的問題 |
發(fā)布時間: 2012/8/24 17:08:05 |
今天,也是突發(fā)奇想,在MySQL上驗證varchar(15)會存15個中文,超過的會自動截取前15個。 一直抱守舊的觀念(這種觀念可能來源與sql server),varchar類型中,中文占兩個字節(jié),因此只能存varchar長度的一半的中文字?jǐn)?shù)。但實際上,在MySQL中不管是中文還是英文,都是長度值,只是數(shù)據(jù)庫”的文章">數(shù)據(jù)庫選擇不同字符編碼時,varchar最大長度不一樣,但同一編碼下英文和中文的長度是一樣。 MySQL5的文檔,其中對varchar字段類型這樣描述:varchar(m) 變長字符串。M 表示最大列長度。M的范圍是0到65,535。(VARCHAR的最大實際長度由最長的行的大小和使用的字符集確定,最大有效長度是65,532字節(jié))。 MySQL 5.1遵從標(biāo)準(zhǔn)SQL規(guī)范,并且不刪除VARCHAR值的尾部空格。VARCHAR保存時用一個字節(jié)或兩個字節(jié)長的前綴+數(shù)據(jù)。如果VARCHAR列聲明的長度大于255,長度前綴是兩個字節(jié)。 好了,貌似懂了一點。但具體他說的長度大于255時使用2個字節(jié)長度前綴,小學(xué)減法題:65535 - 2 = 65533啊。不知道這些大牛如何計算的,暫且保留疑問吧? 注:我測試了一下使用UTF8編碼,varchar的最大長度為21854字節(jié)。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |