nvarchar 和varchar區別


       有時候設計字段的時候,碰到nvarchar和varchar時候,是有點猶豫。所以今天就來探個究竟把。

     (一)  varchar是非Unicode可變長度類型,nvarchar是Unicode編碼可變長度類型

DECLARE @name AS VARCHAR(50)='我是中國人test'
SELECT @name AS Name,
DATALENGTH(@name) AS [Length]

 

DECLARE @nname AS NVARCHAR(50)='我是中國人test'
SELECT @nname AS Name,
DATALENGTH(@nname) AS [Length]

    (二)它們兩者的最大長度不一樣

        nvarchar的最大值是4000

       varchar最大值是8000

       (三) varchar能存儲的字節數就是它的長度,nvarchar能存儲的字節數是它的長度乘2

CREATE TABLE Test
(
  vStr varchar(10),
  nStr nvarchar(10)
)

--對於數字
INSERT INTO [dbo].[Test] VALUES('1234567890','1234567890')

--對於字母
INSERT INTO [dbo].[Test] VALUES('abcdefghik','abcdefghik')

--對於漢字
INSERT INTO [dbo].[Test] VALUES('我是中國人','我是中國人我愛我祖國')

--對於漢字和字母
INSERT INTO [dbo].[Test] VALUES('我是中國zz','我是中國人zhang')

 

     (四) 實際開發中,如何選擇,到底是用哪個好呢?

        總的來說,我是比較推崇使用nvarchar

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

     (五)題外話

        各位園友,有啥看法的,能否告知一下,謝謝

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM