以前都是習慣使用 MySQL,因此接觸 SQL Server 的時間不算長,
可是卻常常分不清 varchar 、char 與開頭多了一個 n 在的差異在哪?
雖然之前有看過不同之處,但是常常忘記...所以決定寫一篇把這件事記起來。
varchar 與 char 的差異在於資料庫儲存資料時是使用固定長度儲存或是變動長度,
例如 varchar(10) 與 char(10) 雖然都是宣告成 10 個字元,但是在儲存的資料假設只有八個字
對於資料庫來說 varchar 型別只會佔用 8 bytes,而 char 型別卻還是佔用10 bytes。
那為什麼要分成這兩者型態呢?有什麼差異?
如果資料是經常更新的時候,那麼會建議使用 char,因為它固定長度,
對於資料庫來說不用再找空間配置會比較快,反之 varchar 則較慢 (var其實就是變動的意思)。
那多了一個 n 在開頭又有什麼差別呢?主要這個 n 在定義欄位的內容每個字是以2 bytes儲存,
正確來說應該是使用 unicode 的編碼儲存。
那這樣 nvarchar(10) 與 varchar(10)的差異又在哪裡呢?
在上面有提到varchar會動態存10個字,而10個字只會佔用10 bytes,但是nvarchar卻會佔用20 bytes,
假設我們儲存中文字時,一個中文字會佔掉 varchar 兩個位置,也就是說varchar(10)最多只能存5個中文字,
但是nvarchar(10) 則是存10個中文字。
沒有留言:
張貼留言