SQLServer中char、varchar、nchar、nvarchar的区别:
(1)?????? 定義:
char:??? 固定長度,存儲(chǔ)ANSI字符,不足的補(bǔ)英文半角空格。
nchar:?? 固定長度,存儲(chǔ)Unicode字符,不足的補(bǔ)英文半角空格
varchar:? 可變長度,存儲(chǔ)ANSI字符,根據(jù)數(shù)據(jù)長度自動(dòng)變化。
nvarchar: 可變長度,存儲(chǔ)Unicode字符,根據(jù)數(shù)據(jù)長度自動(dòng)變化。
nvarchar(n) :包含 n個(gè)字符的可變長度 Unicode 字符數(shù)據(jù)。n 的值必須介于 1? 與? 4,000 之間。字節(jié)的存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍。所輸入的數(shù)據(jù)字符長度可以為零。
? varchar[(n)]:長度為 n 個(gè)字節(jié)的可變長度且非 Unicode的字符數(shù)據(jù)。n 必須是一個(gè)介于?? 1 和 8,000之間的數(shù)值。存儲(chǔ)大小為輸入數(shù)據(jù)的字節(jié)的實(shí)際長度,而不是 n 個(gè)字節(jié)。所輸入的數(shù)據(jù)字符長度可以為零。
注意: ?????ANSI主要是以單字節(jié)來存儲(chǔ)數(shù)據(jù),一般適合英文。而我們常用的漢字需要用兩個(gè)字節(jié)來存儲(chǔ),所以就要使用unicode的數(shù)據(jù)類型,不然讀取出來的數(shù)據(jù)可能會(huì)亂碼。
(2)區(qū)別:
????? ①從存儲(chǔ)方式上,nvarchar是按字符存儲(chǔ)的,而 varchar是按字節(jié)存儲(chǔ)的;
????? ②從存儲(chǔ)量上考慮, varchar比較節(jié)省空間,因?yàn)榇鎯?chǔ)大小為字節(jié)的實(shí)際長度,而 nvarchar是雙字節(jié)存儲(chǔ);
????? ③在使用上,如果存儲(chǔ)內(nèi)容都是英文字符而沒有漢字等其他語言符號,建議使用varchar;含有漢字的使用nvarchar,因?yàn)閚varchar是使用Unicode編碼,即統(tǒng)一的字符編碼標(biāo)準(zhǔn),會(huì)減少亂碼的出現(xiàn)幾率;
④?? 如果你做的項(xiàng)目可能涉及不同語言之間的轉(zhuǎn)換,建議用nvarchar。
(3)優(yōu)缺點(diǎn):
?? Nvarchar優(yōu)點(diǎn):判斷字符串的時(shí)候可以不需要考慮中英文兩種字符的差別,可以避免程序中亂碼的問題。
?????????? 缺點(diǎn):存儲(chǔ)英文字符會(huì)增大一倍的存儲(chǔ)空間.但是在存儲(chǔ)代價(jià)已經(jīng)很低廉的情況下,優(yōu)先考慮兼容性會(huì)給你帶來更多好處的,效率沒有varchar高。
(4)為什么要用nvarchar?
??? 有n前綴的,n表示Unicode字符,即所有字符都占兩個(gè)字節(jié),nchar,nvarchar
字符中,英文字符只需要一個(gè)字節(jié)存儲(chǔ)就足夠了,但漢字眾多,需要兩個(gè)字節(jié)存儲(chǔ),英文與漢字同時(shí)存在時(shí)容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產(chǎn)生的,它所有的字符都用兩個(gè)字節(jié)表示,即英文字符也是用兩個(gè)字節(jié)表示。
(5)有關(guān)var的簡單介紹:
有var前綴的,表示是實(shí)際存儲(chǔ)空間是變長的,varchar,nvarchar
所謂定長就是長度固定的,當(dāng)輸入的數(shù)據(jù)長度沒有達(dá)到指定的長度時(shí)將自動(dòng)以英文空格在其后面填充,使長度達(dá)到相應(yīng)的長度;而變長字符數(shù)據(jù)則不會(huì)以空格填充,比較例外的是,text存儲(chǔ)的也是可變長。
(6)如何使用這些類型?
如果你肯定存儲(chǔ)的數(shù)據(jù)長度,而且不包中文的,可以選擇char類型。
如果肯定存儲(chǔ)的數(shù)據(jù)長度,但可能包括中文,可以選擇nchar類型。
如果不確定存儲(chǔ)的數(shù)據(jù)長度,存儲(chǔ)只有英文、數(shù)字的最好用varchar
如果不確定存儲(chǔ)的數(shù)據(jù)長度,也有可能有中文,可以選擇nvarchar類型,在SQL Server2005中也是比較常用的字符數(shù)據(jù)類型。
轉(zhuǎn)載于:https://www.cnblogs.com/never-giveUp/p/4034959.html
總結(jié)
以上是生活随笔為你收集整理的SQLServer中char、varchar、nchar、nvarchar的区别:的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 年利息和月利息怎么换算
- 下一篇: 信用卡备用金怎么取出来