使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有啥好处? [关闭]
Posted
技术标签:
【中文标题】使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有啥好处? [关闭]【英文标题】:What are the benefits of using VARCHAR(max), NVARCHAR(max) and VARBINARY(max) instead of TEXT, NTEXT and IMAGE? [closed]使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有什么好处? [关闭] 【发布时间】:2012-09-23 01:33:38 【问题描述】:我知道 TEXT、NTEXT 和 IMAGE 已被弃用,最终将从 SQL Server 中删除。
但是,除了这种弃用,为什么 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 数据类型更好?微软为什么选择它们?
我注意到 VARCHAR 和 NVARCHAR 可以与 = 和 GROUP BY 一起使用,而旧类型不能。还有更多好处吗?
【问题讨论】:
不仅仅是=
。几乎没有任何字符串函数适用于text
字段,并且新的数据类型更易于使用。例如,要对文本字段进行替换,您需要使用 TEXTPTR
s like here。对于varchar(max)
,您只需致电REPLACE
可能重复:***.com/questions/564755/…
您希望从这个问题中获得什么?您可以在“与类似的非最大数据类型一致的数据类型”或“微软大声喊叫不要使用的数据类型”之间进行选择。您实际要使用哪些类型?
@Damien_The_Unbeliever:我希望了解还有哪些其他优势。文本等不会马上停产,甚至在下一个 SQL Server 中也不会停产,那么立即转换数千列真的值得吗?还是可以等?我在这类问题中看到了很多见解。
【参考方案1】:
因为它们已被弃用或not going to be supported
重要 ntext 、 text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免使用这些数据类型 在新的开发工作中,并计划修改应用程序 目前使用它们。使用 nvarchar(max)、varchar(max) 和 varbinary(max) 代替。
相关问题
SQL 2008 - varchar(max) vs text data types SQL Server Text type vs. varchar data type【讨论】:
是的,但是,除了弃用之外,为什么新的数据类型更好?除了弃用... @JohnAssymptoth 除了如果你有一天开始使用它们,你将不得不迁移,而不是从一开始就这样做?我不确定我是否遵循您的逻辑:-) 不,他们根本没有depreciated
。但他们一直是deprecated
,因为他们背负着遗留的包袱,例如必须使用 TEXTPTR、WRITETEXT 等来处理 N/TEXT【参考方案2】:
这些数据类型已被弃用,因为随着 SQL Server 的进步,不再需要处理与 VARCHAR 或 BINARY 不同的大块文本 (TEXT) 或二进制数据 (IMAGE)。由于存储不再是一个真正的问题,我们现在可以对您的内容进行 SUBSTRING(<varchar(max)>
, 1234567, 400),而在过去,1 MB 似乎很多并且需要特殊处理,例如这里的函数article.
IMAGE 携带与 TEXT 类似的包袱,这需要以一种特殊的方式存储大小,而不是扩展 VARBINARY 以适应任何东西一直到 2GB。
但是,具有专用 BLOB 和 CLOB 的相同原因在内存/存储限制下仍然有效,因此 SQL Server CE 继续具有 IMAGE 类型,并且在这方面不会很快消失。
【讨论】:
以上是关于使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有啥好处? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章