1. 程式人生 > >char、varchar、nchar、nvarchar的區別

char、varchar、nchar、nvarchar的區別

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

  1. 定長或變長
    所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;有var字首的,表示是實際儲存空間是變長的,比如varchar,nvarchar變長字元資料則不會以空格填充,比較例外的是,text儲存的也是可變長。
  2. Unicode或非Unicode
    資料庫中,英文字元只需要一個位元組儲存就足夠了,但漢字和其他眾多非英文字元,則需要兩個位元組儲存。如果英文與漢字同時存在,由於佔用空間數不同,容易造成混亂,導致讀取出來的字串是亂碼。Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。而字首n就表示Unicode字元,比如nchar,nvarchar
    ,這兩種型別使用了Unicode字符集。
  3. 基於以上兩點來看看欄位容量
    char,varchar 最多8000個英文,4000個漢字
    nchar,nvarchar 可儲存4000個字元,無論英文還是漢字