SQL 2008 - varchar(max)vs文本数据类型

时间:2011-09-12 15:19:21

标签: sql sql-server-2008 varchar sqldatatypes varcharmax

  

可能重复:
  SQL Server Text type vs. varchar data type
  Using varchar(MAX) vs TEXT on SQL Server

从这篇文章中看,它们的大小相同:http://msdn.microsoft.com/en-us/library/ms143432.aspx

真的正确吗?有什么真正的区别?

我刚刚从oracle迁移了一些数据(clob并将其变成了varchar(max),但它看起来像是截断了一些值,我应该使用TEXT吗?

谢谢!

3 个答案:

答案 0 :(得分:13)

不,你不应该使用TEXT。对于一个it has been deprecated since SQL Server 2005,你会发现许多字符串操作不适用于它。不要使用TEXTNTEXTIMAGE - 请改用VARCHAR(MAX)NVARCHAR(MAX)VARBINARY(MAX)

答案 1 :(得分:9)

不推荐使用旧版类型(TEXT,NTEXT,IMAGE),并且将在SQL Server的未来版本中删除对它们的支持。

您使用它们的方式存在显着差异。新的MAX类型支持.WRITE语法的高效更新。遗留类型具有一组神秘的功能来实现相同的目标(TEXTPTRUPDATETEXTsp_invalidate_testptr)。

新的MAX类型可用于REPLACESUBSTRING等函数,任何接受VARCHAR(N)的函数也会接受VARCHAR(MAX)

旧版类型不支持MAX类型支持的隐式转换,请参阅Data Type Conversions

某些引擎功能适用于MAX类型,但不适用于传统类型,例如。在线操作(SQL 11 they support tables with BLOBs

答案 2 :(得分:2)

链接文章仅涉及空间分配。至少知道text, ntext and image data types will be removed from future releases of SQL Server所以对于新表,使用varchar(max),nvarchar(max)或varbinary(max)。

同样重要的是 如何与这些值进行交互。您是否宁愿使用标准列='真正长值'或UPDATETEXT以及其他不太常见的操作来处理列,因为数据类型?