SQL Server數(shù)據(jù)類(lèi)型char、nchar、varchar、nvarchar的區(qū)別淺析
來(lái)源:易賢網(wǎng) 閱讀:1193 次 日期:2014-06-27 20:37:10
溫馨提示:易賢網(wǎng)小編為您整理了“SQL Server數(shù)據(jù)類(lèi)型char、nchar、varchar、nvarchar的區(qū)別淺析”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了SQLServer數(shù)據(jù)類(lèi)型char、nchar、varchar、nvarchar的區(qū)別淺析,本文寫(xiě)的比較容易明白,需要的朋友可以參考下。

在SQLServer中,當(dāng)我們?cè)O(shè)置字符型字段的時(shí)候,往往有很多個(gè)數(shù)據(jù)類(lèi)型供我們選擇,如:charncharvarcharnvarchar等,那么我們到底應(yīng)該選擇哪一個(gè)呢?下面就一一來(lái)描述其區(qū)別。

char:固定長(zhǎng)度,非Unicode字符數(shù)據(jù),長(zhǎng)度為n個(gè)字節(jié)。n的取值范圍為1至8,000,存儲(chǔ)大小是n個(gè)字節(jié)。char的SQL2003同義詞為character。

varchar:可變長(zhǎng)度,非Unicode字符數(shù)據(jù)。n的取值范圍為1至8,000。max指示最大存儲(chǔ)大小是2^31-1個(gè)字節(jié)。存儲(chǔ)大小是輸入數(shù)據(jù)的實(shí)際長(zhǎng)度加2個(gè)字節(jié)。所輸入數(shù)據(jù)的長(zhǎng)度可以為0個(gè)字符。SQL-2003中的varchar就是charvarying或charactervarying。

nchar:n個(gè)字符的固定長(zhǎng)度的Unicode字符數(shù)據(jù)。n值必須在1到4,000之間(含)。存儲(chǔ)大小為兩倍n字節(jié)。nchar的SQL-2003同義詞為nationalchar和nationalcharacter。

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

char,varchar:最多8000個(gè)英文,4000個(gè)漢字

nchar,nvarchar:可存儲(chǔ)4000個(gè)字符,無(wú)論英文還是漢字

char,nchar:定長(zhǎng),速度快,占空間大,需處理

varchar,nvarchar:變長(zhǎng),速度慢,占空間小,無(wú)需處理

定長(zhǎng)就是長(zhǎng)度固定的,當(dāng)輸入的數(shù)據(jù)長(zhǎng)度沒(méi)有達(dá)到指定的長(zhǎng)度時(shí)將自動(dòng)以英文空格在其后面填充,使長(zhǎng)度達(dá)到相應(yīng)的長(zhǎng)度。

變長(zhǎng)字符數(shù)據(jù)則不會(huì)以空格填充,比較例外的是,text存儲(chǔ)的也是可變長(zhǎng)。

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

2、varchar。存儲(chǔ)變長(zhǎng)數(shù)據(jù),但存儲(chǔ)效率沒(méi)有char高。如果一個(gè)字段可能的值是不固定長(zhǎng)度的,我們只知道它不可能超過(guò)10個(gè)字符,把它定義為varchar(10)是最合算的。varchar類(lèi)型的實(shí)際長(zhǎng)度是它的值的實(shí)際長(zhǎng)度+1。為什么“+1”呢?這一個(gè)字節(jié)用于保存實(shí)際使用了多大的長(zhǎng)度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關(guān)鍵是根據(jù)實(shí)際情況找到權(quán)衡點(diǎn)。

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

所以一般來(lái)說(shuō),如果含有中文字符,用nchar/nvarchar,如果純英文和數(shù)字,用char/varchar。

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)