8

可能重复:
SQL Server 文本类型与 varchar 数据类型
在 SQL Server 上使用 varchar(MAX) 与 TEXT

从这篇文章中,看起来它们都具有相同的容量:http: //msdn.microsoft.com/en-us/library/ms143432.aspx

这真的正确吗?真正的区别是什么?

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

谢谢!

4

3 回答 3

13

不,你不应该使用TEXT. 一方面,它自 SQL Server 2005 以来已被弃用,而且您会发现许多字符串操作对它不起作用。不要使用TEXT,NTEXTIMAGE根本 - 使用VARCHAR(MAX), NVARCHAR(MAX)orVARBINARY(MAX)代替。

于 2011-09-12T15:23:49.337 回答
9

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

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

新的 MAX 类型可用于类似REPLACEor的函数SUBSTRING,任何接受 a 的函数VARCHAR(N)也将接受 a VARCHAR(MAX)

遗留类型不支持 MAX 类型支持的隐式转换,请参阅数据类型转换

某些引擎功能适用于 MAX 类型,但不适用于旧版本,例如。在线操作(在SQL 11 中,它们支持带有 BLOB 的表

于 2011-09-12T15:24:40.347 回答
2

链接的文章仅涉及空间分配。至少要知道text、ntext 和 image 数据类型将从 SQL Server 的未来版本中删除,因此对于新表,请使用 varchar(max)、nvarchar(max) 或 varbinary(max)。

同样重要的是人们如何与这些价值观互动。由于数据类型的原因,您更愿意使用标准 column = 'really long value' 还是UPDATETEXT和其他不太常见的操作来处理列?

于 2011-09-12T15:26:08.167 回答