兩個字段目前來說存儲的數據沒什么大區別但是nvarchar(MAX)類型查詢的時候方便一些,ntext查詢的時候還得轉換類型。
比如:
ntex類型:select * from 表 where convert(nvarchar(MAX),InfoContent) !=''
nvarchar(MAX)類型:select * from 表 where InfoContent !=''
NTEXT:
默認情況下,NTEXT將文本數據存儲在LOB結構中, 在表結構中只存儲指針,指針指向該數據在LOB中的存儲位置。
NVARCHAR(MAX)
默認情況下,不超過8,000字節的數據直接存儲在表結構中,超過的才和NTEXT一樣將數據存儲在LOB結構中。
NTEXT向NVARCHAR(MAX)的轉換:
ALTER TABLE 表名 ALTER COLUMN 字段名 NVARCHAR(MAX) null
執行上面的SQL語句之后,雖然完成了轉換,但數據的存儲結構並沒有改變,還是按照NTEXT的默認存儲方式存儲在LOB中。
如何實現轉換后數據按NVARCHAR(MAX)的方式進行存儲呢?只需執行下面的語句:
UPDATE 表名 SET 字段名 = 字段名
比如:表名是Comment,字段名是Content,SQL語句就是: UPDATE Comment SET Content = Content
實測數據:100條數據,耗時706秒。
NTEXT將在以后版本的SQL SERVER中不被支持,微軟的文檔中建議用NVARCHAR(MAX)取代NTEXT。
ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.
意思就是:
Microsoft SQL Server 的未來版本中,將刪除 ntext、 文本和 image 數據類型。 請避免在新的開發工作中使用這些數據類型,並計划修改當前使用它們的應用程序。 使用 nvarchar (max)、 varchar (max) 和 varbinary (max) 來代替。