1樓:匿名使用者
varchar 對每個英文(ascii)字元都佔用2個位元組,對一個漢字也只佔用兩個位元組
char 對英文(ascii)字元佔用1個位元組,對一個漢字佔用2個位元組
varchar 的型別不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"
而char 不一樣,比如char(100),它的值是"qian",而實際上它在資料庫中是"qian "(qian後共有96個空格,
就是把它填滿為100個位元組)。
由於char是以固定長度的,所以它的速度會比varchar快得多!但程式處理起來要麻煩一點,要用trim之類的函式把兩邊的空格去掉!
[上面的理論是從網上copy來的]
至於用法如下:
在一些長度變化不是很大的欄位應該用char型別,而對長度變化很大的欄位應該用varchar型別了。
2樓:匿名使用者
char和varchar區別在於字元的長短char是10個長度varchar是50個長度
3樓:陽光上的橋
char(n)是定長格式,格式為char(n)的欄位固定佔用n個字元寬度,如果實際存放的資料長度超過n將被擷取多出部分,如果長度小於n就用空字元填充。
varchar(n)是變長格式,這種格式的欄位根據實際資料長度分配空間,不浪費對於的空間,但是搜尋資料的速度會麻煩一點。
一般地說,只要一個表有一個欄位定義為varchar(n)型別,那麼其餘用char(n)定義的欄位實際上也是varchar(n)型別。
如果你的長度本身不長,比如就3~10個字元,那麼使用char(n)格式效率比較高,搜尋速度快。但是如果有的資料很長,有的資料有比較短,比如註冊使用者的簡介這樣的欄位,實在沒有辦法,而且很在乎浪費的空間,那麼就用varchar(n)格式。
sql server 2005中 char()、nchar()、varchar()、nvarchar()有什麼區別?
4樓:智填寶誌願填報
char和nchar一般用於資料長度基本相同的欄位,如手機號都是11位,可以用char(11)。但如果長度不完全一樣,假設有8位的手機號,那會在資料後面自動補3個佔位符,此時如果有like '%phone%' 這樣的模糊查詢就有問題了
n一般用於中文儲存,char 10能存5個漢字或10個字元,nchar能存10個漢字或10個字元。
char的儲存效率比varchar稍微高點,就是要定長,根據不同專案需要吧
5樓:匿名使用者
帶n的,儲存字元個數
不帶n的,儲存位元組個數。
char,nchar是儲存定長位元組或字元,如定義了char(2)的話,
就是佔用了兩個位元組,即使登陸資料的時候登陸了一個1個位元組,db中也是佔用兩個位元組的空間。
varchar,nvarchar是儲存變長位元組或字元,即儲存的位元組或字元數就是實際向db中登陸的位元組或字元數。
6樓:貝博實厲漫
高等教育出版社《資料庫技術及應用》的81頁char
儲存固定長度的字串
最大長度
8000
個位元組varcahr
儲存可變長度的字串
最大長度8000
個位元組nchar
儲存固定長度的unicode字串
最大長度為
4000
個字元nvarchar
儲存可變長度的unicode字串
最大長度為
4000個字元
備註:有“var”字首的都是可變的意思,就是說你在輸入字元時可以輸入任意長度不同的字串
另外,你存名字:中文名就用nvarchar吧英文名就用varchar吧,