2011年5月14日 星期六

[程式設計] SQL Server的nvarchar(max)的使用

因為工作的關係,我常接觸SQL Server及資料庫的欄位等,常用nvarchar或varchar等資料型態,但過去的舊版本(SQL Server 2000以前),若字串使用想要比較不受長度限制,通常都會使用text、ntext或image這類的資料型態,只是這一類很少用。其實Microsoft開放nvarchar(max)很久了,我這次有打算使用,有做點功課,順便在此做些分享。


nvarchar(max)的作用如其名,是可以將字串宣布存放unicode字串的varchar字串型態,長度是max,但實際可儲存內容為2G,過去只有text或ntext這類的資料型態可以使用這麼長的長度。
nvarchar(max)的使用及跟ntext的差異,可以整理出以下幾個重點:
  1. Microsoft很顯然地要推nvarchar(max),所以事先做了個宣布,未來的SQL Server版本會刪除text、ntext、image等的使用,直接鼓勵開發人員使用nvarchar(max)、varchar(max)、varbinary(max)。
  2. 宣布成nvarchar(max)的欄位,無法建立index索引。(這很正常,畢竟欄位長度變這麼大)
  3. nvarchar(max)欄位還是可以做Group by條件的使用,但過去的ntext是不行。
  4. 除上所述,nvarchar(max)差不多跟ntext一樣。(以上邏輯也可以套用在varchar(max)及text的關係上)
如果有興趣看原文的參考說明,可以參考這篇NTEXT vs NVARCHAR(MAX) in SQL 2005

沒有留言: