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

SQL 2008-varchar(max)与文本数据类型,sql,sql-server-2008,varchar,sqldatatypes,varcharmax,Sql,Sql Server 2008,Varchar,Sqldatatypes,Varcharmax,可能重复: 从本文中可以看出,它们的容量大小相同: 这是真的吗?真正的区别是什么 我刚刚从oracle(clob)迁移了一些数据,并将其转换为varchar(max),但看起来它截断了一些值,我应该使用文本吗 谢谢!不,你不应该使用TEXT。首先,你会发现许多字符串操作都不适用于它。根本不要使用TEXT、NTEXT或IMAGE-使用VARCHAR(MAX)、NVARCHAR(MAX)或VARBINARY(MAX)。传统类型(TEXT、NTEXT、IMAGE)已弃用,对它们的支持将在SQL S

可能重复:

从本文中可以看出,它们的容量大小相同:

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

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


谢谢!

不,你不应该使用
TEXT
。首先,你会发现许多字符串操作都不适用于它。根本不要使用
TEXT
NTEXT
IMAGE
-使用
VARCHAR(MAX)
NVARCHAR(MAX)
VARBINARY(MAX)

传统类型(TEXT、NTEXT、IMAGE)已弃用,对它们的支持将在SQL Server的未来版本中取消

在使用它们的方式上有很大的不同。新的MAX类型支持有效的语法更新。旧类型有一组神秘的函数来实现相同的(,)

新的MAX类型可用于或之类的函数,任何接受
VARCHAR(N)
的函数也将接受
VARCHAR(MAX)

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


某些引擎功能适用于MAX类型,但不适用于传统类型,例如联机操作(in)

链接的文章只涉及空间分配。至少要知道,对于新表,请使用varchar(MAX)、nvarchar(MAX)或varbinary(MAX)


同样重要的是如何与这些值交互。由于数据类型的原因,您是更愿意使用标准列=“真长值”还是其他不太常见的操作来处理列?

文本正在变得不受欢迎-此线程有您想要的答案:您使用了什么代码来迁移数据?我想你有一个问题,你是如何做到的,而不是数据类型是什么。看看链接该死的微软。为什么他们不能坚持惯例,使用像MySQL和Postgres这样的文本?@Henley,因为他们已经使用了文本,它很烂。为什么MySQL不能遵循标准,使用偏移量/获取,而不是这种愚蠢的限制废话?泥泞是双向的……如果风很大