mssql中varchar和nvarchar有什麼區別

2022-03-03 22:00:12 字數 6794 閱讀 7895

1樓:方寸之間的財

varchar(n)

長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。

nvarchar(n)

包含 n 個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。

兩欄位分別有欄位值:我和coffee

那麼varchar欄位佔2×2+6=10個位元組的儲存空間,而nvarchar欄位佔8×2=16個位元組的儲存空間。

如欄位值只是英文可選擇varchar,而欄位值存在較多的雙位元組(中文、韓文等)字元時用nvarchar

上面是一個總結介紹,通過上面的介紹,可以知道。

varchar(4) 可以輸入4個字線,也可以輸入兩個漢字

nvarchar(4) 可以輸四個漢字,也可以輸4個字母,但最多四個

2樓:

varchar(n) ,變長,n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組——單位元組儲存資料

nvarchar(n),變長,n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為零——處理unicode資料型別(所有的字元使用兩個位元組表示)

中文字元儲存到資料庫中會儲存為兩個位元組(一般採用unico編碼),英文字元儲存到資料庫中,如果欄位的型別為varchar,則只會佔用一個位元組,而如果欄位的型別為nvarchar,則會佔用兩個位元組.正常情況下,我們使用varchar也可以儲存中文字元,但是如果遇到作業系統是英文作業系統並且對中文字型的支援不全面時, 在資料庫儲存中文字元為varchar就會出現亂碼(顯示為??).

sql中varchar和nvarchar有什麼區別?

3樓:墨汁諾

sql中varchar和nvarchar區別:輸入不同,含義不同。

一、輸入不同:

varchar(4)可以輸入4個字線,也可以輸入兩個漢字。

nvarchar(4)可以輸四個漢字,也可以輸4個字母,但最多四個。

二、含義不同:

varchar(n)長度為n個位元組的可變長度且非unicode的字元資料。n必須是一個介於1和8,000之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是n個位元組。

nvarchar(n)包含n個字元的可變長度unicode字元資料。n的值必須介於1與4,000之間。位元組的儲存大小是所輸入字元個數的兩倍。

字元資料型別

varchar是變長字元資料,其長度不超過8kb。char是定長字元資料,其長度最多為8kb。超過8kb的ascii資料可以使用text資料型別儲存。

例如,因為html文件全部都是ascii字元,並且在一般情況下長度超過8kb,所以這些文件可以text資料型別儲存在sqlserver中。

在sqlserver中,unicode資料以nchar、nvarchar和ntext資料型別儲存。使用這種字元型別儲存的列可以儲存多個字符集中的字元。當列的長度變化時,應該使用nvarchar字元型別,這時最多可以儲存4000個字元。

4樓:匿名使用者

1、char。char儲存定長資料很方便,char欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間,不足的自動用空格填充,所以在讀取的時候可能要多次用到trim()。

2、varchar。儲存變長資料,但儲存效率沒有char高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 varchar(10)是最合算的。

varchar型別的實際長度是它的值的實際長度+1。為什麼「+1」呢?這一個位元組用於儲存實際使用了多大的長度。

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

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

4、nchar、nvarchar、ntext。這三種從名字上看比前面三種多了個「n」。它表示儲存的是unicode資料型別的字元。

我們知道字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。

可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。

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

它們的區別概括成:

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

varchar,nvarchar,text 不定長,空間小,速度慢,無需處理

nchar、nvarchar、ntext處理unicode碼

5樓:

varchar(n)

長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。

nvarchar(n)

包含 n 個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。

兩欄位分別有欄位值:我和coffee

那麼varchar欄位佔2×2+6=10個位元組的儲存空間,而nvarchar欄位佔8×2=16個位元組的儲存空間。

如欄位值只是英文可選擇varchar,而欄位值存在較多的雙位元組(中文、韓文等)字元時用nvarchar

上面是一個總結介紹,通過上面的介紹,可以知道。

varchar(4) 可以輸入4個字線,也可以輸入兩個漢字

nvarchar(4) 可以輸四個漢字,也可以輸4個字母,但最多四個

sql server中的varchar和nvarchar有什麼區別

6樓:月洋晨

varchar(n):變長型字元資料型別,儲存最長長度為8,000 個字元

nvarchar(n):可變長度 unicode 資料,其最大長度為4,000 字元.位元組的儲存大小是所輸入字元個數的兩倍,就是說它是雙位元組來儲存資料的。

如果儲存資料如果存在單位元組時,它也是以雙位元組來佔用儲存空間的。

varchar一般適用於英文和數字。

sql server中的varchar和nvarchar有什麼區別

7樓:匿名使用者

1、char。char儲存定長資料很方便,char欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間,不足的自動用空格填充,所以在讀取的時候可能要多次用到trim()。

2、varchar。儲存變長資料,但儲存效率沒有char高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 varchar(10)是最合算的。

varchar型別的實際長度是它的值的實際長度+1。為什麼「+1」呢?這一個位元組用於儲存實際使用了多大的長度。

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

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

4、nchar、nvarchar、ntext。這三種從名字上看比前面三種多了個「n」。它表示儲存的是unicode資料型別的字元。

我們知道字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。

可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。

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

它們的區別概括成:

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

varchar,nvarchar,text 不定長,空間小,速度慢,無需處理

nchar、nvarchar、ntext處理unicode碼

8樓:匿名使用者

varchar(n)

長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。

nvarchar(n)

包含 n 個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。

兩欄位分別有欄位值:我和coffee

那麼varchar欄位佔2×2+6=10個位元組的儲存空間,而nvarchar欄位佔8×2=16個位元組的儲存空間。

如欄位值只是英文可選擇varchar,而欄位值存在較多的雙位元組(中文、韓文等)字元時用nvarchar

9樓:夏侯翠茵言簫

在進行sql

server資料庫設計的時候,我們發現有幾種資料型別是以「n」開頭的,還有幾種對應不是以「n」開頭的資料型別,我們以nvarchar和varchar為例,看看它們到底有什麼區別。

在進行sql

server資料庫設計的時候,我們發現有幾種資料型別是以「n」開頭的,比如nchar,nvarchar,ntext等,還有幾種對應不是以「n」開頭的資料型別,比如char,varchar,text等,程式讀寫資料庫的時候,它們好像沒什麼區別,是不是用哪種資料型別都可以呢?下面我們以nvarchar和varchar為例,看看它們到底有什麼區別。

首先,我們來看下nvarchar和varchar的官方幫助裡的說明:

varchar(n)

長度為n

個位元組的可變長度且非

unicode

的字元資料,n

必須是一個介於1和

8,000

之間的數值,儲存大小為輸入資料的位元組的實際長度,而不是

n個位元組,所輸入的資料字元長度可以為零,varchar

在sql-92

中的同義詞為

char

varying

或character

varying。

nvarchar(n)包含n

個字元的可變長度

unicode

字元資料,n

的值必須介於1與

4,000

之間,位元組的儲存大小是所輸入字元個數的兩倍,所輸入的資料字元長度可以為零,nvarchar

在sql-92

中的同義詞為

national

char

varying

和national

character

varying。

看來兩種資料型別是有區別的,那麼該如何選擇兩種資料型別呢?

首先,varchar和nvarchar都能儲存漢字,區別在於:一個漢字佔varchar(2),只佔nvarchar(1),而字母只佔varchar(1),那麼在資料庫欄位求長度的時候,用varchar就不一定知道它確切有幾個字元,如果用nvarchar,漢字也是nvarchar(1),字母也是nvarchar(1),那麼很容易知道欄位的長度了。

其次,varchar的檢索快於nvarchar,varchar在sql

server中是採用單位元組來儲存資料的,nvarchar是使用unicode來儲存資料的,中文字元儲存到sql

server中會儲存為兩個位元組(一般採用unicode編碼),英文字元儲存到資料庫中,如果欄位的型別為varchar,則只會佔用一個位元組,而如果欄位的型別為nvarchar,則會佔用兩個位元組。正常情況下,我們使用varchar也可以儲存中文字元,但是如果遇到作業系統是英文作業系統並且對中文字型的支援不全面時,在sql

server儲存中文字元為varchar就會出現亂碼(顯示為??),而且正常情況下,主機都會支援中文,所以如果使用varchar來儲存資料,在開發階段是發現不了問題的,多數情況下,在佈署的時候也不會有問題,但是,如果佈署的主機是英文作業系統,並且不支援中文,那問題就出來了,所有的varchar欄位在儲存中文的時候都會變成亂碼(顯示為??),而且一般情況下你不會知道這是因為你採用了錯誤的資料型別造成的,你會試著去裝中文字型,試著去設定作業系統的語言環境,這些都不能解決問題,唯一能解決問題的方法是把資料庫欄位的型別改為nvarchar(或者nchar),對專案管理比較熟悉的朋友應該都知道,到佈署階段再來修改資料庫是一件很恐怖的事情。

第三,使用nvarchar的另一個好處就是在判斷字串的時候可以不需要考慮中英文兩種字元的差別,當然,使用nvarchar儲存英文字元會增大一倍的儲存空間,但是在儲存代價已經很低廉的情況下,優先考慮相容性會給你帶來更多好處,所以在設計的時候應該儘量使用nvarchar來儲存資料,只有在你確保該欄位不會儲存中文的時候,再採用varchar來儲存。

電線中的L和N分別代表什麼線,l和n分別代表什麼線

電線的l和n分別代表 l代表火線 英文 live wire n代表零線 英文neutral wire 火線和零線的區分 1 對地的電壓不同 火線的對地電壓等於220v 零線的對地的電壓等於零 它本身跟大地相連線在一起的 2 規範安全用電 如果站在地上的人接觸到了火線 有意或無意 人體所承受的電壓接近...

拼音中n和l發音有什麼區別

這兩個聲母都是舌尖中音,但n是鼻音,而l是邊音。也就是說這兩個聲母的發音方法是不一樣的。區分這兩個音,首先弄清楚什麼是鼻音,什麼是邊音。所謂鼻音,顧名思義就是發音時,口腔中的發音部位完全閉塞,軟顎下降,開啟鼻腔通路,氣流顫動聲帶,從鼻腔通過發音。而邊音則是發音時,舌尖與上齒齦接觸,但舌頭兩邊仍留有空...

諾基亞N73 N78 N79,諾基亞N73和N78,N79哪個更好?

n73 1900左右 n78 2100左右 n79 2800左右 到元旦或過年時大概有200 500的降幅,但n73可能降不了多少 n73 版1700左右 n78 1900左右 n79 2600左右 n73和n78的 已經趨於穩定,不會再降多少了,n79還可能降價300左右 去 看個大概 n79應該...