c 中資料型別Char與VarChar有什麼區別

2025-01-04 11:25:16 字數 6036 閱讀 7160

1樓:海洋

首先告訴你c#裡面沒有varchar,你意思應該說資料庫裡面的char與varchar的區別,首先varchar比char長,而且char型別在值不夠時會自動補上空格,varchar則不會。

補充:我實在看不明白"''aa"是什麼意思,去掉了"'"就變成這樣了''aa,你最好還是把你sql語句發上來看看。

2樓:網友

最好的解釋就是看sql server自帶的聯機叢書,這是我從上面摘錄的:

char和varchar都是字串型別的》

char:固定長度的非 unicode 字元資料,最大長度為 8,000 個字元。

varchar:

可變長度的非 unicode 資料,最長為 8,000 個字元。

nchar是unicode 字串型別的》

nchar固定長度的 unicode 資料,最大長度為 4,000 個字元。

用unicode編碼的字串,結果是字元的整數值。

varchar和char的區別

3樓:聊電子的小璇

char和varchar的區別如下:

1、最大長度:char最大長度是255字元,varchar最大長度是65535個位元組。

2、定長:char是定長的,不足的部分用隱藏空格填充,varchar是不定長的。

3、空間使用:char會浪費空間,varchar會更加節省空間。

4、查詢效率:char查詢效率會很高,varchar查詢效率會更低。

5、尾部空格:char插入時可省略,vaechar插入時不會省略,查詢時省略。

char和varchar的區別。

char和varchar是mysql中的兩個相似的列,都可以儲存字元和字串。但是char儲存的列的長度是不可變的,varchar儲存的列的長度是可變的。

例如:插入char(5)的列表示這個列佔用的儲存空間一直是5個字元大小。但是在儲存資料是往往不會滿足5個字元,可能會比5少,也可能會多。比如我們。

插入「abc」時,很顯然「abc」是3個字元,此時mysql底層會將「abc」後面追加兩個空格字元為「abc 」。檢索時,mysql會自動幫你做一次trim()操作,去掉最後的空格,然後返回「abc」。

varchar和char的區別

4樓:亞浩科技

1、char(n)和varchar(n)中括號中n代表字元的個數,並不代表位元組個數,所以當使用了中文的時候(utf8)意型猜味著可以插入m箇中文,但是實際會佔用m*3個位元組。即,n限制了儲存多長的值,但是所佔用的空間大小不一致。例如varchar(n)表示最多可以儲存n個,無論是字母數字還是中文,都是隻能儲存50個。

2、同時char和varchar最大的區別就在於char不管實際value都會佔用n個字元的空間,而varchar只會佔用實際字元應該佔用的空間+1,並且實際空間+1<=n。

3、超過char和varchar的n設定後,字串會被截斷。

4、char的上限為255位元組,varchar的上限65535位元組,text的上限為65535。

5、char在儲存的時候會截斷尾部的空格,varchar和text不會。盯虧。

在sql嚴格模式下,無論char還是varchar,如果尾部要被截斷的是非空格,會提示錯誤,即插入失敗。

在sql非嚴格模式下,無論char還是varchar,如果尾部要被截斷的是非空格,會提示warning,但可以成功。

如果尾部要被截斷的是空格,無論sql所處模式,varchar都可以插入成卜則型功但提示warning;char也可以插入成功,並且無任何提示。

6、varchar會使用1-3個位元組來儲存長度,text不會。

文章部分引用。

資料庫:char和varchar資料型別有哪些區別?

5樓:手機使用者

1.有var字首的,表示是實際儲存空間是變長的,varchar,nvarchar

所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元資料則不會以空格填充,比較例外的是,text儲存的也是可變長。

表示unicode字元,即所有字元都佔兩個位元組,nchar,nvarchar

字元中,英文字元只需要乙個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。

3.基於以上兩點來看看欄位容量。

char,varchar 最多8000個英文,4000個漢字。

nchar,nvarchar 可儲存4000個字元,無論英文還是漢字。

4.使用(個人偏好)

a.如果資料量非常大,又能100%確定長度且儲存只是ansi字元,那麼char

b.能確定長度又不一定是ansi字元或者,那麼用nchar;

c.對於超大資料,如文章內容,使用ntext

d.其他的通用nvarchar

6樓:長沛凝戚儒

資料型別。

char表示的是固定長度,varchar表示的是實際長度的資料型別。

比如:如果是char型別,當你輸入字元小於長度時,後補空格;而是varchar型別時,則表示你輸入字元的實際長度。

7樓:素子欣嬴志

varchar也就是。

variable

char,即可變的char。

比如:char(4)表示該欄位將佔用4個位元組。

varchar(20)表示該欄位最多可接受20個字元,但該欄位的佔用空間為欄位值的實際大小。如你的一條記錄的該欄位值為"good",則該記錄裡該欄位的佔用空間為4個位元組,而非20。

資料庫中char和varchar的區別

8樓:教育仁昌

資料庫中char和varchar的區別為:長度不同、效率不同、儲存不同。

一、長度不同。

1、char型別:char型別的長度是固定的。

2、varchar型別:varchar型別的長度是可變的。

二、效率不同。

1、char型別:char型別每次修改的資料長度相同,效率更高。

2、varchar型別:varchar型別每次修改的資料長度不同,效率更低。

三、儲存不同。

9樓:憨憨

在建立資料庫表結構的時候,為了給乙個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的字元資料。

10樓:網友

char和varchar都是字串型別的。

char固定長度的非 unicode 字元資料,最大長度為 8,000 個字元。

所佔儲存空間為你定義時的大小。

資料量較大時以char欄位為查詢條件時查詢得快一些。

varchar可變長度的非 unicode 資料,最長為 8,000 個字元。

所佔儲存空間為實際大小(在不超過你定義長度時)如果要儲存的欄位不是定長的。用varchar較好一些。

所以,對經常修改(或插入)的欄位選用char,而不常修改的建議用varchar

11樓:網友

char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是:

char(m)型別的資料列裡,每個值都佔用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足.(在檢索操作中那些填補出來的空格字元將被去掉)在varchar(m)型別的資料列裡,每個值只佔用剛好夠用的位元組再加上乙個用來記錄其長度的位元組(即總長度為l+1位元組).

在mysql中用來判斷是否需要進行對據列型別轉換的規則。

1、在乙個資料表裡,如果每乙個資料列的長度都是固定的,那麼每乙個資料行的長度也將是固定的.

2、只要資料表裡有乙個資料列的長度的可變的,那麼各資料行的長度都是可變的.

3、如果某個資料表裡的資料行的長度是可變的,那麼,為了節約儲存空間,mysql會把這個資料表裡的固定長度型別的資料列轉換為相應的可變長度型別.

例外:長度小於4個字元的char資料列不會被轉換為varchar型別。

資料庫中char和varchar的區別

12樓:顏浩蕩霍輝

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的區別

13樓:網友

固定長度 (char) 或可變長度 (varchar) 字元資料型別。

char[(n)]

長度為 n 個位元組的固定長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為 n 個位元組。

char 在 sql-92 中的同義詞為 character。

varchar[(n)]

長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。

所輸入的資料字元長度可以為零。varchar 在 sql-92 中的同義詞為 char varying 或 character varying。

註釋 如果沒有在資料定義或變數宣告語句中指定 n,則預設長度為 1。如果沒有使用 cast 函式指定 n,則預設長度為 30。

將為使用 char 或 varchar 的物件被指派資料庫的預設排序規則,除非用 collate 子句另外指派了特定的排序規則。該排序規則控制用於儲存字元資料的**頁。

支援多語言的站點應考慮使用 unicode nchar 或 nvarchar 資料型別以儘量減少字元轉換問題。如果使用 char 或 varchar:

如果希望列中的資料值大小接近一致,請使用 char。

如果希望列中的資料值大小顯著不同,請使用 varchar。

如果執行 create table 或 alter table 時 set ansi_padding 為 off,則乙個定義為 null 的 char 列將被作為 varchar 處理。

當排序規則**頁使用雙位元組字元時,儲存大小仍然為 n 個位元組。根據字串的不同,n 個位元組的儲存大小可能小於 n 個字元。

c語言中資料型別的轉換

include stdio.h main 輸出的資料型別不匹配 給你舉個例子吧 j i 實際j值和i一樣 j i,實際j值比i大一 你還沒明白 i 注意它是在i使用後自動加一printf d i 這是兩句命令,執行完i 後才輸出,i值自然 1 j 它是在使用前加一 printf d j 也是兩句命令...

double的資料型別範圍是多少?c

double 的資料型別取值範圍如下 1 負值取值範圍為 1.79769313486231570e 308 到 4.94065645841246544e 324 2 正值取值範圍為 4.94065645841246544e 324 到 1.79769313486231570e 308。拓展資料 c ...

c語言多種資料型別混合輸入,C語言多種資料型別混合輸入

用字串就輸出了!比如 int main void 這樣輸入的只要是可顯示字元就都能輸出了 c語言中,每一種輸入控制符可以用來輸入哪種資料型別?a,a 讀入一個浮點值 僅c99有效 c 讀入一個字元 d 讀入十進位制整數 i 讀入十進位制,八進位制,十六進位制整數 o 讀入八進位制整數 x,x 讀入十...