SQL Server NVARCHAR與VARCHAR差別比較

前言

在開資料時在存字串常會有選擇上的問題,到底該存哪種型別?
而在此就稍微介紹NVARCHAR、VARCHAR的差異。
以SQL Server 2019資料庫為準。

NVARCHAR [ ( n | max ) ]

n表示可變大小字串資料。 n 會定義字串大小 (單位為位元組配對),且可以是 1 到 4,000 之間的值。max 表示儲存大小上限是 2^30-1 個字元 (2 GB)。

VARCHAR [ ( n | max ) ]

使用 n 以位元組為單位來定義字串大小,該值可以介於 1 到 8,000,或使用 max 來表示資料行大小限制最多為 2^31-1 個位元組 (2 GB) 的儲存體。

NVARCHAR VARCHAR
Unicode支援
每個字元儲存容量 英文字元2 Byte;非英文字元2 Byte 英文字元1 Byte;非英文字元2 Byte
儲存長度 不定長,依照資料內容 不定長,依照資料內容
n的長度限制 1~4000(表示可以用寫4000個中、英文字元) 1~8000(表示可以用寫8000個英文字元)
max 2GB 2GB
結論 要儲存英文以外的用NVARCHAR,可以避免亂碼問題,但儲存空間相較VARCHAR會多一些。 只存英文VARCHAR沒問題,存其他可能會有亂碼問題。

總結

使用NVARCHAR來儲存字串會比較好,因為可避免字串因為中英混雜亂碼。

參考資料

https://docs.microsoft.com/zh-tw/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-ver15
https://docs.microsoft.com/zh-tw/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15
https://ithelp.ithome.com.tw/articles/10213922