Unicode字元集就是為瞭解決字元集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示 如果還為了這個糾結,就直接看看後面的解說,做決定吧。 一般如果用到中文或者其它特殊字元,我就會使用n開頭的類型,否則的話直接使用var開頭的。 sql server中的varc ...
Unicode字元集就是為瞭解決字元集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示
如果還為了這個糾結,就直接看看後面的解說,做決定吧。
一般如果用到中文或者其它特殊字元,我就會使用n開頭的類型,否則的話直接使用var開頭的。
sql server中的varchar和Nvarchar有什麼區別?
答: 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(10)與nvarchar(10)
前者是非unicode型,存儲字元按1個算(內部空間存儲占1位元組),存儲漢字的話按2個算,
就是可以存10個字元或者5個漢字
後者是unicode型,存儲什麼都是按1個算(內部空間存儲占2位元組),
就是可以存10個字元或10個漢字
varchar(10)與nvarchar(10)就是分別占10個位元組和20個位元組
———————————————————————————————————————————————————
char(n) | 定長 | 索引效率高 程式裡面使用trim去除多餘的空白 | n 必須是一個介於 1 和 8,000 之間的數值,存儲大小為 n 個位元組 |
varchar(n) | 變長 | 效率沒char高 靈活 | n 必須是一個介於 1 和 8,000 之間的數值。存儲大小為輸入數據的位元組的實際長度,而不是 n 個位元組 |
text(n) | 變長 | 非Unicode數據 | |
nchar(n) | 定長 | 處理unicode數據類型(所有的字元使用兩個位元組表示) | n 的值必須介於 1 與 4,000 之間。存儲大小為 n 位元組的兩倍 |
nvarchar(n) | 變長 | 處理unicode數據類型(所有的字元使用兩個位元組表示) | n 的值必須介於 1 與 4,000 之間。位元組的存儲大小是所輸入字元個數的兩倍。所輸入的數據字元長度可以為零 |
ntext(n) | 變長 | 處理unicode數據類型(所有的字元使用兩個位元組表示) |
來源:https://www.cnblogs.com/net5x/articles/9592295.html