SQL中char和varvhar的區別

時間 2022-05-15 17:30:13

1樓:匿名使用者

char 資料型別的列存放固定個數的非unicode字元。

varchar資料型別的列存放不固定個數的非unicode字元。

固定,就是說如果定義的是5個字元,那麼就分配不個字元,如果你的值是『ab』,也分配5個字元,不足的位數補足空格或其他字元『ab 』(後面不足了3個空格)

不固定,就是可變,就是實際多少個字元就是多少個字元,多餘的截去,如,『ab』,則實際儲存的就是『ab』,如果是『abcdefg』,則實際儲存的就是『abcde』。

2樓:

char 精確定義字元的長度。

varchar模糊定義,它的長度在0到最大值之間。佔用幾個字元就是幾個字元,但是效率方面沒char高。

一般對字元長度不固定,或很長的時候會用。

3樓:匿名使用者

char 只能儲存一箇中文字元。

而varchar的儲存可以改變大小

4樓:宇文學岺蕢婷

sql中char和nchar

的區別使用char

存英文字元一個佔一個位元組,存中文,一箇中文佔2個位元組,nchar存中英文都佔兩個位元組

對於程式中的string型欄位,sqlserver中有char、varchar、nchar、nvarchar四種型別來對應(暫時不考慮text和ntext),開建立資料庫中,對這四種型別往往比較模糊,這裡做一下對比。

5樓:匿名使用者

使用 char 和 varchar 資料

char 和 varchar 資料型別的資料包括:

大寫字母或小寫字母,比如 a、b 和 c。

數字,比如 1,2 或 3。

特殊字元,如 at 符號 (@)、"與"符號 (&) 和驚歎號 (!)。

char 或 varchar 資料可以是單個字元,或者是最長可達 8,000 個字元的字串。

varchar 是可變長度的資料型別。比列的長度小的值,不會按照列的長度在其右邊填補。當建立列時,如果 ansi_padding 選項設為 off,則所有儲存在列中的字元值的尾隨空格都將被截斷。

當建立列時,如果 ansi_padding 設為 on,則尾隨空格不被截斷。

char 函式可以把一個整數轉換為 ascii 字元。當確定控制字元時(比如回車或換行),這是很有用的。在字串中用 char(13) 和 char(10) 產生一個回車並生成一個新行。

char *a和char* a有什麼區別?

6樓:淋漓盡致的

沒有什麼不同,都是定義一個指向char型的指標但是要注意的是如果你想在一句話裡面2個指標,那麼正確的做法應該是char *a,*b;而不是char* a,b;

後面那個b只是一個char型變數

所以一般提倡使用第一種,避免糊塗搞錯,當然如果你僅僅在一句話裡面定義一個變數或者是在定義形參的話,那麼第二種看上去更直接一點

在sql server中,怎麼區別char跟varchar?我是個小白。

7樓:匿名使用者

char和varchar是一樣的字元型,

不同在於,varchar比char更靈活,精確,且不佔記憶體空間,

當你取同樣的字元時,char會在該字元後面加上空格,

而varchar則只取得這個字元,比如有欄位5,用varchar從該欄位

中取aa時,你取得的是"aa",如果用char,則取得的是"aa ",

char會在後面用空格補齊5個欄位。

所以,varchar比char更精確,但,varchar的速度卻比char慢。

因為char是直接取得全部,而varchar是精確的去取得你要的字元。

sql中char和nchar 的區別

8樓:匿名使用者

使用char 存英文字元一個佔一個位元組,存中文,一箇中文佔2個位元組,nchar存中英文都佔兩個位元組

對於程式中的string型欄位,sqlserver中有char、varchar、nchar、nvarchar四種型別來對應(暫時不考慮text和ntext),開建立資料庫中,對這四種型別往往比較模糊,這裡做一下對比。

sql sever中char和nchar的區別

9樓:匿名使用者

使用char 存英文字元一個佔一個位元組,存中文,一箇中文佔2個位元組,nchar存中英文都佔兩個位元組

對於程式中的string型欄位,sqlserver中有char、varchar、nchar、nvarchar四種型別來對應(暫時不考慮text和ntext),開建立資料庫中,對這四種型別往往比較模糊,這裡做一下對比。

定長或變長

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

2.unicode或非unicode資料庫中,英文字元只需要一個位元組儲存就足夠了,但漢字和其他眾多非英文字元,則需要兩個位元組儲存。如果英文與漢字同時存在,由於佔用空間數不同,容易造成混亂,導致讀取出來的字串是亂碼。

unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。而字首n就表示unicode字元,比如nchar,nvarchar,這兩種型別使用了unicode字符集。

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

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

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

4.使用(個人偏好)

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

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

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

其他的通用nvarchar

char、varchar、nchar、nvarchar特點比較

char

char儲存定長資料很方便,char欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間。

varchar

儲存變長資料,但儲存效率沒有char高,如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 varchar(10)是最合算的。varchar型別的實際長度是它的值的實際長度+1。為什麼"+1"呢?

這一個位元組用於儲存實際使用了多大的長度。

從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

text

text儲存可變長度的非unicode資料,最大長度為2^31-1(2,147,483,647)個字元。

nchar、nvarchar、ntext

這三種從名字上看比前面三種多了個"n"。和char、varchar比較起來,nchar、nvarchar最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。

所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar。

引:部落格園

sql char 和 varchar 的區別

10樓:農暢公冶琨瑤

char會自動填充空格,varchar不會。所以varchar比較節省空間,但是檢索效率char高一點。用法不存在什麼區別。

舉個例子吧

欄位a為char(5)型別

欄位b為varchar(5)型別

向a,b中賦值'123'

a的結果是'123'(123+兩個空格)

b的結果是'123'

11樓:匿名使用者

顯著區別:(摘抄複製貼上)

varchar 儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組

char 儲存大小為 n 個位元組

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

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

sql中CHAR後面的數字可以隨便寫嗎?

一樓的說法不太準確。和varchar各有優缺點。char是定長,實際長度超過指定長度是,右邊被截去,不足時右邊補空格 varchar是變長,數字表示允許的最大長度,在儲存時用另外一個位元組來儲存實際的長度。2.一般來說,char確實會導致一定的儲存空間浪費,但在進行資料操作的時候速度更快 varch...

sql中varchar和nvarchar有什麼區別

墨汁諾 sql中varchar和nvarchar區別 輸入不同,含義不同。一 輸入不同 varchar 4 可以輸入4個字線,也可以輸入兩個漢字。nvarchar 4 可以輸四個漢字,也可以輸4個字母,但最多四個。二 含義不同 varchar n 長度為n個位元組的可變長度且非unicode的字元資...

SQL中的INNER JOIN和JOIN有什麼區別

千鋒教育 使用join連表,缺陷的情況下是inner join,開發中使用的left join和right join屬於outer join,outer join還包括full join 現有兩張表,table a 是左邊的表。table b 是右邊的表。其各有四條記錄,其中有兩條記錄name是相同...