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