可能重复:
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吗?
谢谢!
答案 0 :(得分:13)
不,你不应该使用TEXT
。对于一个it has been deprecated since SQL Server 2005,你会发现许多字符串操作不适用于它。不要使用TEXT
,NTEXT
或IMAGE
- 请改用VARCHAR(MAX)
,NVARCHAR(MAX)
或VARBINARY(MAX)
。
答案 1 :(得分:9)
不推荐使用旧版类型(TEXT,NTEXT,IMAGE),并且将在SQL Server的未来版本中删除对它们的支持。
您使用它们的方式存在显着差异。新的MAX类型支持.WRITE
语法的高效更新。遗留类型具有一组神秘的功能来实现相同的目标(TEXTPTR
,UPDATETEXT
,sp_invalidate_testptr
)。
新的MAX类型可用于REPLACE
或SUBSTRING
等函数,任何接受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以及其他不太常见的操作来处理列,因为数据类型?