1. 程式人生 > >nvarchar 和varchar區別

nvarchar 和varchar區別

今晚在設計資料庫欄位的時候,碰到nvarchar和varchar型別的選擇,是有點猶豫。所以今天就來探個究竟。
(一) varchar是非Unicode可變長度型別,nvarchar是Unicode編碼可變長度型別
DECLARE @name AS VARCHAR(50)=‘我是中國人test’
SELECT @name AS Name,
DATALENGTH(@name) AS [Length]—長度length為14

DECLARE @nname AS NVARCHAR(50)=‘我是中國人test’
SELECT @nname AS Name,
DATALENGTH(@nname) AS [Length]—長度length為18
(二)它們兩者的最大長度不一樣
nvarchar的最大值是4000
varchar最大值是8000
(三) varchar能儲存的位元組數就是它的長度,nvarchar能儲存的位元組數是它的長度乘2
(四) 實際開發中,如何選擇,到底是用哪個好呢?
總的來說,我是比較推崇使用nvarchar

     有人說,varchar比nvarchar更省空間,應該更多的用varchar。但是我不是很贊同這個觀點,首先,現在空間相對來說已經不是那麼缺少了,沒有必要太糾結於空間這個了,還有一點就是現在的作業系統基本上內部解析基本上都是用Unicode編碼的,使用了nvarchar你可以避免每次從資料庫讀取或寫入時候,進行編碼轉換,轉換需要時間,並且很容易出錯。如果出錯,恢復回來可沒那麼簡單,並且nvarchar是支援多種語言的。所以我大部分時間做資料庫設計的時候都是用nvarchar的。