1樓:超級善良的這個
區別: 1.char的長度是固定的,而varchar2的長度是可以變化的, 比如,儲存字串「abc",對於char (10),表示你儲存的字元將佔10個位元組(包括7個空字元),而同樣的varchar2 (10)則只占用3個位元組的長度,10只是最大值,當你儲存的字元小於10時。
char(10)和varchar(10)主要的區別是什麼?
2樓:靠名真tm難起
首先明確的是,char的長度是不可變的,而varchar的長度是可變的,定義乙個char[10]和varchar[10],如果存進去的是『abcd』,那麼char所佔的長度依然為10,除了字元『abcd』外,後面跟六個空格,而varchar就立馬把長度變為4了,取資料的時候,char型別的要用trim()去掉多餘的空格,而varchar是不需要的,char的訪問數度還是要比varchar要快得多,因為其長度固定,方便程式的儲存與查詢;但是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。
char的儲存方式是,對英文本元(ascii)占用1個位元組,對乙個漢字占用兩個位元組;而varchar的儲存方式是,對每個英文本元占用2個位元組,漢字也占用2個位元組,兩者的儲存資料都非unicode的字元資料。
3樓:匿名使用者
char的長度是固定的,而varchar2的長度是可以變化的, 比如,儲存字串「abc",對於char (10),表示你儲存的字元將佔10個位元組(包括7個空字元),而同樣的varchar2 (10)則只占用3個位元組的長度,10只是最大值,當你儲存的字元小於10時,按實際長度儲存。
char的效率比varchar2的效率稍高。
目前varchar是varchar2的同義詞。工業標準的varchar型別可以儲存空字串,但是oracle不這樣做,儘管它保留以後這樣做的權利。
char(10)若輸入資料的字元數小於10,則系統自動在其後新增空格來填滿設定好的空間。若輸入的資料過長,將會截掉其超出部分。varchar(10)資料型別的儲存長度為實際數值長度。
4樓:人文漫步者
你想要區分這個變成成的區別,主要是乙個是字段的長度,乙個是詞語的程度是不同的型別。
5樓:匿名使用者
char(10)是不可變長度為10的字串,佔的儲存空間始終為10個字元的長度,而varchar(10)是可變長度的字串,故而可以節省空間。例如:
儲存"aaaaabbbbb",則char(10)需要10個字元的空間來儲存,varchar(10)也需要10個字元的空間;
儲存"aaa",則char(10)需要10個字元的空間來儲存,而varchar(10)只需要3個字元的空間。
雖然每個記錄節省的空間有限,但是記錄很多的時候,節省的空間是很驚人的。
另外,推薦用varchar2代替varchar。因為oracle今後會將varchar作為其他用途。varchar2目前和varchar是完全相同的資料型別。
資料庫中char和varchar的區別
6樓:雯兒心
char的長度是不可變的,而varchar的長度是可變的,也就是說,定義乙個char[10]和varchar[10],如果存進去的是『csdn』,那麼char所佔的長度依然為10,除了字元『csdn』外,後面跟六個空格,而varchar就立馬把長度變為4了,取資料的時候,char型別的要用trim()去掉多餘的空格,而varchar是不需要的,儘管如此,char的訪問數度還是要比varchar要快得多,因為其長度固定,方便程式的儲存與查詢;但是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。再者,char的儲存方式是,對英文本元(ascii)占用1個位元組,對乙個漢字占用兩個位元組;而varchar的儲存方式是,對每個英文本元占用2個位元組,漢字也占用2個位元組,兩者的儲存資料都非unicode的字元資料。
資料庫中char和varchar的區別
7樓:教育仁昌
資料庫中char和varchar的區別為:長度不同、效率不同、儲存不同。
一、長度不同。
1、char型別:char型別的長度是固定的。
2、varchar型別:varchar型別的長度是可變的。
二、效率不同。
1、char型別:char型別每次修改的資料長度相同,效率更高。
2、varchar型別:varchar型別每次修改的資料長度不同,效率更低。
三、儲存不同。
8樓:匿名使用者
資料型別區別如下:
char表示的是固定長度,varchar表示的是實際長度的資料型別。
比如:如果是char型別,當你輸入字元小於長度時,後補空格;而是varchar型別時,則表示你輸入字元的實際長度。
9樓:匿名使用者
varchar也就是 variable char,即可變的char。
比如:char(4)表示該字段將占用4個位元組。
varchar(20)表示該字段最多可接受20個字元,但該字段的占用空間為字段值的實際大小。如你的一條記錄的該字段值為"good",則該記錄裡該字段的占用空間為4個位元組,而非20。
10樓:憨憨
在建立資料庫表結構的時候,為了給乙個string型別的資料定義乙個資料庫的資料庫型別,一般參考的都是char或者varchar,這兩種選擇有時候讓人很糾結,今天想總結一下它們兩者的區別,明確一下選擇塔門的理由。
首先明確的是,char的長度是不可變的,而varchar的長度是可變的,也就是說,定義乙個char[10]和varchar[10],如果存進去的。
是『csdn』,那麼char所佔的長度依然為10,除了字元『csdn』外,後面跟六個空格,而varchar就立馬把長度變為4了,取資料的時。
候,char型別的要用trim()去掉多餘的空格,而varchar是不需要的,儘管如此,char的訪問數度還是要比varchar要快得多,因為其。
長度固定,方便程式的儲存與查詢;但是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間。
效率,而varchar是以空間效率為首位的。再者,char的儲存方式是,對英文本元(ascii)占用1個位元組,對乙個漢字占用兩個位元組;而。
varchar的儲存方式是,對每個英文本元占用2個位元組,漢字也占用2個位元組,兩者的儲存資料都非unicode的字元資料。
11樓:匿名使用者
char和varchar都是字串型別的。
char固定長度的非 unicode 字元資料,最大長度為 8,000 個字元。
所佔儲存空間為你定義時的大小。
資料量較大時以char欄位為查詢條件時查詢得快一些。
varchar可變長度的非 unicode 資料,最長為 8,000 個字元。
所佔儲存空間為實際大小(在不超過你定義長度時)如果要儲存的字段不是定長的。用varchar較好一些。
所以,對經常修改(或插入)的字段選用char,而不常修改的建議用varchar
12樓:匿名使用者
char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是:
char(m)型別的資料列裡,每個值都占用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足.(在檢索操作中那些填補出來的空格字元將被去掉)在varchar(m)型別的資料列裡,每個值只占用剛好夠用的位元組再加上乙個用來記錄其長度的位元組(即總長度為l+1位元組).
在mysql中用來判斷是否需要進行對據列型別轉換的規則。
1、在乙個資料表裡,如果每乙個資料列的長度都是固定的,那麼每乙個資料行的長度也將是固定的.
2、只要資料表裡有乙個資料列的長度的可變的,那麼各資料行的長度都是可變的.
3、如果某個資料表裡的資料行的長度是可變的,那麼,為了節約儲存空間,mysql會把這個資料表裡的固定長度型別的資料列轉換為相應的可變長度型別.
例外:長度小於4個字元的char資料列不會被轉換為varchar型別。
j**a中varchar和char的區別
mysql中char和varchar有什麼區別?
13樓:椰子糖
varchar通常用於儲存可變長字串。在磁碟儲存資料時,它只會占用實際使用到的空間,因此對效能有提公升。vachar在儲存資料時會額外使用1個或者2個字元,用於記錄列的長度,如果列內位元組長度小於等於255就使用1個位元組記錄,如果是大於255則使用2個位元組記錄。
因為varchar是變長的,所以update操作可能會產生碎片,從而使列的長度變長,mysql還需要做額外的工作處理。其實varchar(5)和varchar(255)儲存'hello'所用的空間是一樣的,但是我們在實際使用的時候,列的長度還是越短越好,原因是更長的列會占用更多的記憶體,mysql通常會分配固定大小的記憶體塊儲存內部值。這個在記憶體臨時表做排序和操作的時候會變得很糟糕,在磁碟臨時表進行排序時也會特別的糟糕。
再說一下char,對比下你就會明白。
char型別適用於儲存固定長度的資料。比如說md5後的密碼,這個長度就是固定的32位,很適合使用char型別。因為char型別是固定長度,因此在修改資料時也不容易產生碎片。
他在磁碟上的儲存空間是固定的,如果儲存的資料長度不夠,會在右側以空格的方式補充,方便進行比較。對於非常短的列(單位元組字符集),char的效率比varchar要高,因為char不需要使用額外的位元組去記錄長度。
使用什麼樣的型別儲存資料,要根據實際情況而定,最好是對各種儲存型別都有一定的了解。
純手打,希望可以幫到你,共同進步。:)
14樓:我**很紅
在varchar(m)型別的資料列裡,每個值只占用剛好夠用的位元組再加上乙個用來記錄其長度的位元組,這個說法是錯的。當 m <=255 的時候是用乙個位元組即可記錄其長度,當 m>255 的時候則需要2個位元組。因為 1 個位元組只能記錄變長長度為 0~255,而如果變長長度為 32767 這種大於 255 的值的時候,是沒有辦法單單用1個位元組記錄下來的。
varchar和char的區別,char 10 和VARCHAR 10 主要的區別是什麼?
char 和 varchar 固定長度 char 或可變長度 varchar 字元資料型別。char n 長度為 n 個位元組的固定長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為 n 個位元組。char 在 sql 92 中的同義詞為 chara...
cint型指標和char型指標有什麼區別
風若遠去何人留 本質上來說是一樣的,不管是什麼指標,其本質就是一個地址。但是在使用上還是有所不同的。1 預設指向空間佔用的大小不同。int 指向空間需要有4個位元組,char 指向空間有一個位元組就可以了。如果int 指向的空間不足,那麼對其讀寫時就會出現越界操作。2 使用時的可取值範圍不同。用 取...
c 中char轉換為c該轉成什麼型別
答 string c 宣告乙個字串有好多種方式 char cstring 等等好多 我不是搞c 的 char 是8位,int 是32位,可以傳 int 但是要確保 你的 int 變成8位後沒有位數損失,char 一般是乙個 byte 陣列,先要用 marshal.copy 函式將陣列複製到乙個 in...