1、char(n)型別 char型別時定長的型別,即當定義的是char(10),輸入的是"abc"這三個字元時,它們佔的空間一樣是10個位元組,包括7個空位元組。當輸入的字元長度超過指定的數時,char會擷取超出的字元。而且,當儲存char值時,mysql是自動刪除輸入字串末尾的空格。
char是適合儲存很短的、一般固定長度的字串。例如,char非常適合儲存密碼的md5值,因為這是乙個定長的值。對於非常短的列,char比varchar在儲存空間上也更有效率。
2、varchar(n)型別 varchar(n)型別用於儲存可變長的,長度為n個位元組的可變長度且非unicode的字元資料。n必須是介於1和8000之間的數值,儲存大小為輸入資料的位元組的實際長度+1/2. 比如varchar(10), 然後輸入abc三個字元,那麼實際儲存大小為3個位元組。除此之外,varchar還需要使用1或2個額外位元組記錄字串的長度,如果列的最大長度小於等於255位元組(是定義的最長長度,不是實際長度),則使用1個位元組表示長度,否則使用2個位元組來表示。
所以,從空間上考慮,varcahr較合適;從效率上考慮,用char合適。二者之間需要權衡。
除了char和varchar之外,還有一種nchar、nvarchar(n),包含n個字元的可變長度為unicode字元資料。n的值必須介於1~4000之間,直接的儲存大小是說輸入字元個數的兩倍,所輸入的資料字元長度可以為零。從名字上看,多了乙個n,表示儲存的是unicode資料型別的字元,這是為了儲存漢字用的,1個英文本母或者數字占用的字元為1個,乙個漢字占用2個字元,那麼對於有中英文混合的字串,我們需要定義nvarchar型別。unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar。
還有,text型別。其儲存可變長度的非unicode資料,最大長度為2^31-1(2,147,483,647)個字元。
python中文字元擷取亂碼
python學習中 python中關於中文字串擷取的問題 中文字元擷取亂碼 在python中乙個中文字元佔三個英文本元,看以下 print str 0 6 擷取啤酒兩個中文字元,需要從0開始截到6 print str 0 5 輸出 啤酒啤 就會出現亂碼 usr bin python coding u...
MySQL不能插入中文字元及中文字元亂碼問題
mysql的預設編碼是latin1,不支援中文,要支援中午需要把資料庫的預設編碼修改為gbk或者utf8。在安裝後mysql之後,它的配置檔案不是很給力,不知道你們的是不是,反正我的是!開始插入中文字元的時候出現如下錯誤 error 1366 hy000 incorrect string value...
MySQL不能插入中文字元及中文字元亂碼問題
mysql的預設編碼是latin1,不支援中文,要支援中午需要把資料庫的預設編碼修改為gbk或者utf8。在安裝後mysql之後,它的配置檔案不是很給力,不知道你們的是不是,反正我的是!開始插入中文字元的時候出現如下錯誤 error 1366 hy000 incorrect string value...