我应该使用哪种数据类型来存储文本数据?

时间:2012-03-07 08:01:28

标签: c# sql-server-2008

我正在制作个人资料系统,我在数据库中有一个名为AboutMe的字段,其数据类型为文本

此字段最多可包含30,000个字符。出现的问题是,如果我使用多达27,000个字符(或超过4,000个字符),它们不会显示在UI上,而是截断内容并仅显示少量字符。 如果我使用4000或超过4000个字符,则UI显示少于4,000个字符

我正在使用SQL Server 2008 R2数据库。

3 个答案:

答案 0 :(得分:2)

从SQL Server 2005开始,您应该将VARCHAR(MAX)用于非Unicode文本,或者NVARCHAR(MAX)用于Unicode文本(每个字符使用2个字节)。已弃用TEXTNTEXT不应再次使用。

这些是当前的数据类型,它们可以像任何其他文本/字符串列一样对待。所有的字符串函数都可以正常工作。

每个列的最大容量是 2 GByte 数据 - 这是20亿个非Unicode字符或10亿个Unicode字符。

考虑到Tolstoj的战争与和平之类的长篇大概可能是500万字以下(560'000字),这就足以存储该书至少 200 Unicode中的时间 - 对于大多数应用程序来说应该足够了....

答案 1 :(得分:2)

text数据类型为deprecated,因此您应该使用varchar(max)。

如果用UI表示SQL Managament Studio,那么它不会显示大文本值是正确的。出于性能原因,编辑器有一些这样的限制。

以编程方式访问数据时,没有此限制。但是,您应该知道大文本值是在单独的数据流中发送的,因此如果每个记录有多个大文本值,则必须按照选择它们的顺序访问它们。

答案 2 :(得分:0)

您可以使用ntext数据类型。