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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/15026.html
標籤:SQL Server
