SQL Server數據類型char、nchar、varchar、nvarchar的區別淺析
來源:易賢網 閱讀:1370 次 日期:2014-06-27 20:37:10
溫馨提示:易賢網小編為您整理了“SQL Server數據類型char、nchar、varchar、nvarchar的區別淺析”,方便廣大網友查閱!

這篇文章主要介紹了SQLServer數據類型char、nchar、varchar、nvarchar的區別淺析,本文寫的比較容易明白,需要的朋友可以參考下。

在SQLServer中,當我們設置字符型字段的時候,往往有很多個數據類型供我們選擇,如:charncharvarcharnvarchar等,那么我們到底應該選擇哪一個呢?下面就一一來描述其區別。

char:固定長度,非Unicode字符數據,長度為n個字節。n的取值范圍為1至8,000,存儲大小是n個字節。char的SQL2003同義詞為character。

varchar:可變長度,非Unicode字符數據。n的取值范圍為1至8,000。max指示最大存儲大小是2^31-1個字節。存儲大小是輸入數據的實際長度加2個字節。所輸入數據的長度可以為0個字符。SQL-2003中的varchar就是charvarying或charactervarying。

nchar:n個字符的固定長度的Unicode字符數據。n值必須在1到4,000之間(含)。存儲大小為兩倍n字節。nchar的SQL-2003同義詞為nationalchar和nationalcharacter。

nvarchar:可變長度Unicode字符數據。n值在1到4,000之間(含)。max指示最大存儲大小為2^31-1字節。存儲大小是所輸入字符個數的兩倍+2個字節。所輸入數據的長度可以為0個字符。nvarchar的SQL-2003同義詞為nationalcharvarying和nationalcharactervarying。

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

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

char,nchar:定長,速度快,占空間大,需處理

varchar,nvarchar:變長,速度慢,占空間小,無需處理

定長就是長度固定的,當輸入的數據長度沒有達到指定的長度時將自動以英文空格在其后面填充,使長度達到相應的長度。

變長字符數據則不會以空格填充,比較例外的是,text存儲的也是可變長。

1、char。char存儲定長數據很方便,char字段上的索引效率級高,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間,不足的自動用空格填充,所以在讀取的時候可能要多次用到Trim()。

2、varchar。存儲變長數據,但存儲效率沒有char高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為varchar(10)是最合算的。varchar類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用于保存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

3、nchar、nvarchar、ntext。這三種從名字上看比前面三種多了個“n”。它表示存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字??梢钥闯鍪褂胣char、nvarchar數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。

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

更多信息請查看IT技術專欄

更多信息請查看數據庫
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看