【问题标题】:why varchar(max) is not storing data more than 8000 charaters为什么 varchar(max) 不存储超过 8000 个字符的数据
【发布时间】:2015-10-09 06:47:05
【问题描述】:

我想存储一个超过 8000 个字符的字符串,所以我使用了 VARCHAR(MAX),因为它的限制是 2gb。

如果我错了,请纠正我 Varchar(max) 如果字符串小于或等于 8000,则将数据存储在 IN_ROW_DATA 页面中。如果字符串大于 8000,则它开始将字符串存储在 LOB_DATA 页面中,并且指针为存储在 IN_ROW_DATA 页中。

我下面的代码没有存储超过 8000 个字符的字符串。

create table test(name varchar(max))
insert into test
values(replicate('a',8001)

Select len(name) from test  

-- 这仍然会给我 8000 而不是 8001 的长度。所以在这种情况下,varchar(max) 和 varchar(8000) 之间没有区别。

谁能告诉我我做错了什么以及如何存储大于 8000 个字符的字符串。

【问题讨论】:

标签: sql-server-2008


【解决方案1】:

在插入数据之前,您将数据截断为 8000 字节。要创建超过 8000 个字符的值,您必须使用 varchar(max) 数据类型,而 'a' 的类型只是 varchar。

create table test(name varchar(max))
insert into test
values(replicate(CAST('a' AS varchar(MAX)), 100000));

select len(name) from test;

【讨论】:

  • 缺少一些括号(已更正)。你的答案是最好的,删除我的并投票给你。
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 2012-12-30
  • 2023-03-14
  • 2014-03-07
  • 1970-01-01
  • 2013-06-17
  • 2011-12-19
相关资源
最近更新 更多